{"data":[{"identifier":"/blog/2022-02/0.6.0-alpha-1","title":"v0.6.0 - Alpha 1","text":"v0.6.0 - Alpha 1 Hi and thanks for waiting for the v0.6.0 release! I know feature updates has stalled completely for a while due to the major rearchitecture going on. But it's allowed me to include two major features that I'm sure most people will love! You know what \"they\" say, something something lessons learned the hard way... Custom Builds For more information, see the Custom Builds documentation . It's been a long time since the very first public v0.2.0 release, and A LOT of features have been added in. Which with modern toolchains like Vite, Javascript can be easily tree shaken! What can't be tree shaken however, is the CSS distributables. As of this release, the Framework CSS distributable is a whopping 441+ KiB [MIN: 376+ kB] [MIN-BROTLI: 20+ KiB] [MIN-GZIP: 33+ KiB] . Which is A LOT of raw CSS. Even with the minified version being compressed for transfer. One of the big features in this update is being able to download the source code of any release and disabling specific CSS features via custom builds. Using the build script, we can disable sources of bloat, like the global utility responitivitiy values. e.g. <* margin={[\"mobile:small\"]}> npm run build:framework -- --disable-globals-intrinsics-responsitivity Which takes the Framework CSS distributable from 441+ KiB to 250+ KiB (MIN: 215+ kB) (MIN-BROTLI: 15+ KiB) (MIN-GZIP: 19+ KiB). That's about a ~56% reduction alone! So with this feature you can highly tune your bundle size by excluding features you don't need. This does come with the drawback of needing to manually rebuild (or in a CI) the CSS each time you update Kahi UI. In the future, having a Vite plugin that can on-demand rebuild the SASS codebase will be looked at. And also whenever dart-sass is compatible, integrate a Custom Build and Custom Theme builder into the documentation site. Custom Themes For more information, see the Custom Themes documentation . Previously the only documented way of customizing the theme of Kahi UI was using the per-Component CSS Custom Properties that were available and documented. However the overall global theme was not easily customizable or documented. Now with Custom Builds (see above), you can easily create your own themes. Want to add a new palette color that instantly works? Open and edit the src/themes/default/_theme.scss file. And simply use the built-in palette generator and define a new constant. <!-- prettier-ignore --> @include constants.define( ( \"palettes\": ( \"<PALETTE>\": generators.palette( $dark: ( // Base darkmode color used to generate shades, can be in any color \"base\": <COLOR>, // How much of the `dark` palette should be mixed into the base color per shade \"stepping\": <PERCENTAGE>, ), $light: ( // Base lightmode color used to generate shades, can be in any color \"base\": <COLOR>, // How much of the `light` palette should be mixed into the base color per shade \"stepping\": <PERCENTAGE>, ) ), ), ) ); e.g. @include constants.define( ( \"palettes\": ( \"brand\": generators.palette( $dark: ( \"base\": hsl(200, 25%, 47.5%), \"stepping\": 4%, ), $light: ( \"base\": hsl(200, 30%, 47.5%), \"stepping\": 4%, ) ), ), ) ); Alternatively, you can manually specify shades. @include constants.define( ( \"palettes\": ( \"brand\": ( \"dark\": ( \"base\": hsl(200deg, 25%, 47.5%), \"foreground\": \"light\", \"lightest\": hsl(201deg, 24%, 40%), \"lighter\": hsl(200deg, 24%, 42%), \"light\": hsl(200deg, 24%, 43%), \"normal\": hsl(200deg, 24%, 44%), \"bold\": hsl(200deg, 24%, 46%), \"bolder\": hsl(200deg, 25%, 47.5%), \"boldest\": hsl(199deg, 23%, 49%), ), \"light\": ( \"base\": hsl(200deg, 30%, 47.5%), \"foreground\": \"light\", \"lightest\": hsl(199deg, 26%, 57%), \"lighter\": hsl(200deg, 26%, 55%), \"light\": hsl(200deg, 26%, 53%), \"normal\": hsl(199deg, 27%, 51%), \"bold\": hsl(200deg, 27%, 49%), \"bolder\": hsl(200deg, 30%, 47.5%), \"boldest\": hsl(200deg, 29%, 46%), ), ), ), ) ); So check out the documentation and explore the rest of the themeing to make your Application really pop! CHANGELOG Read full changelog on the GitHub Release . "},{"identifier":"/blog/2022-03/0.6.2-introducing-dataselect","title":"v0.6.2 - Introducing DataSelect","text":"v0.6.2 - Introducing DataSelect One feature of commonly required in Web Applications is a select Component that can ingest a data structure and output a list of selectable options. Previously Kahi UI didn't have this feature, now it does and is fully styled! DataSelect Preview Searching Not only that. Just like DataTable, fuzzy search is also supported! DataSelect Fuzzy Search Multiple And of course, multiple choices are allowed! DataSelect Multiple Choice Want the user to only be able to select a maximum amount of choices? Sure! DataSelect Multiple Maximum Choices Conclusion There are many more features documented over at the DataSelect documentation . So check it out! CHANGELOG Read full changelog on the GitHub Release . "},{"identifier":"/blog/2022-03/snippet-search-support","title":"Snippet Search Support","text":"Snippet Search Support So previously, full text search support was only available for documentation pages in the global search. Now search has been updated to have a simplistic ranking system and support for surfacing documentation snippets! Snippet Global Search Playground Filtering Not only that, Playground has been updated to support filtering of all documentation snippets! Playground Snippet Filter Conclusion Hopefully these improvements to search will boost your productivity of using the documentation site. The ranking put in place is just the initial idea of how it should work. So if you can think of anything to help, file a new issue . "},{"identifier":"/docs/actions/auto_focus","title":"auto_focus","text":"auto_focus NOTE : Introduced feature in v0.4.13. auto_focus is a Svelte Action , which when IAutoFocusOptions.enabled: boolean is true, focuses the first focusable element found within the attached element. When false, restores focus to the previously focused element. <script> import { Box, Check, TextInput, auto_focus, } from \"@kahi-ui/framework\"; let enabled = false; </script> <Box palette={enabled ? \"affirmative\" : \"negative\"} padding=\"small\" > {enabled ? \"unselect the checkbox to restore focus\" : \"select the checkbox to auto focus input\"} </Box> <Check bind:state={enabled} /> <div use:auto_focus={{enabled}}> <TextInput placeholder=\"this TextInput will be focused\" /> </div> Imports import {auto_focus} from \"@kahi-ui/framework\"; Compatibility Svelte Actions are always ran on Javascript-enabled Browser. So should not be used for critical end-user functionality, only progressive enhancement. Target You can set the element that is focused with a reference or CSS Selector when enabled via IAutoFocusOptions.target: HTMLElement | string option. <script> import { Box, Check, TextInput, auto_focus, } from \"@kahi-ui/framework\"; let target_element; let enabled = false; </script> <Box palette={enabled ? \"affirmative\" : \"negative\"} padding=\"small\" > {enabled ? \"unselect the checkbox to restore focus\" : \"select the checkbox to auto focus input\"} </Box> <Check bind:state={enabled} /> <div use:auto_focus={{enabled, target: target_element}} > <TextInput placeholder=\"this TextInput will NOT focused\" /> <TextInput bind:element={target_element} placeholder=\"this TextInput will be focused\" /> </div> "},{"identifier":"/docs/actions/click_inside","title":"click_inside","text":"click_inside NOTE : Introduced feature in v0.4.13. click_inside is a Svelte Action , which runs a on_click_inside(event: MouseEvent): void callback whenever your attached element is clicked inside of. <script> import { Box, click_inside, } from \"@kahi-ui/framework\"; let clicked = false; </script> <Box palette={clicked ? \"affirmative\" : \"negative\"} padding=\"small\" actions={[ [ click_inside, { on_click_inside: () => (clicked = true), }, ], ]} > {clicked ? \"I was clicked inside!\" : \"I am currently not clicked...\"} </Box> Imports import {click_inside} from \"@kahi-ui/framework\"; Compatibility Svelte Actions are always ran on Javascript-enabled Browser. So should not be used for critical end-user functionality, only progressive enhancement. Ignore You can ignore elements that matches a given CSS Selector via the IClickInsideOptions.ignore: string option. <script> import { Box, Button, click_inside, } from \"@kahi-ui/framework\"; let clicked = false; </script> <Box palette={clicked ? \"affirmative\" : \"negative\"} padding=\"small\" actions={[ [ click_inside, { ignore: \"button\", on_click_inside: () => (clicked = true), }, ], ]} > {clicked ? \"I was clicked inside!\" : \"I am currently not clicked...\"} <Button>This will not trigger the action!</Button> </Box> "},{"identifier":"/docs/actions/click_outside","title":"click_outside","text":"click_outside NOTE : Introduced feature in v0.2.11. click_outside is a Svelte Action , which runs a on_click_outside(event: MouseEvent): void callback whenever your attached element is clicked outside of. <script> import { Box, click_outside, } from \"@kahi-ui/framework\"; let clicked = false; </script> <Box palette={clicked ? \"affirmative\" : \"negative\"} padding=\"small\" actions={[ [ click_outside, { on_click_outside: () => (clicked = false), }, ], ]} on:click={() => (clicked = true)} > {clicked ? \"I was clicked inside!\" : \"I am currently not clicked...\"} </Box> Imports import {click_outside} from \"@kahi-ui/framework\"; Compatibility Svelte Actions are always ran on Javascript-enabled Browser. So should not be used for critical end-user functionality, only progressive enhancement. Ignore NOTE : Introduced feature in v0.4.13. You can ignore elements that matches a given CSS Selector via the IClickOutsideOptions.ignore: string option. <script> import { Box, Button, click_outside, } from \"@kahi-ui/framework\"; let clicked = false; </script> <Button>This will not trigger the action!</Button> <Box palette={clicked ? \"affirmative\" : \"negative\"} padding=\"small\" actions={[ [ click_outside, { ignore: \"button\", on_click_outside: () => (clicked = false), }, ], ]} on:click={() => (clicked = true)} > {clicked ? \"I was clicked inside!\" : \"I am currently not clicked...\"} </Box> "},{"identifier":"/docs/actions/intersection_observer","title":"intersection_observer","text":"intersection_observer NOTE : Introduced feature in v0.4.1. intersection_observer is a Svelte Action , which runs a on_intersect(intersections: IntersectionObserverEntry[]): void callback whenever the targetted element intersects the root viewport. NOTE : The below REPL basically reimplements IntersectionRender . <script> import { Box, Code, Spacer, Transition, intersection_observer, } from \"@kahi-ui/framework\"; let is_intersecting = false; </script> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Box palette={is_intersecting ? \"affirmative\" : \"negative\"} padding=\"small\" > Scroll down to watch this <Code>Box</Code> change when the <Code>Box</Code> comes into view. </Box> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <div class=\"intersection-observer-preview\" use:intersection_observer={{ threshold: 0.5, on_intersect: (intersections) => { console.log(\"on_intersect\", { intersections, }); is_intersecting = intersections.some( (intersection) => intersection.isIntersecting ); }, }} > {#if is_intersecting} <Transition animation=\"scale\" variation=\"enter\" > <Box class=\"intersection-observer-preview\" palette=\"inverse\" padding=\"small\">I am in view!</Box > </Transition> {/if} </div> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Box palette={is_intersecting ? \"affirmative\" : \"negative\"} padding=\"small\" > Scroll up to watch this <Code>Box</Code> change when the <Code>Box</Code> comes into view. </Box> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <style> :global(.intersection-observer-preview) { height: 40px; } </style> Imports import {intersection_observer} from \"@kahi-ui/framework\"; Compatibility Svelte Actions are always ran on Javascript-enabled Browser. So should not be used for critical end-user functionality, only progressive enhancement. The Action is dependent on IntersectionObserver . "},{"identifier":"/docs/actions/keybind","title":"keybind","text":"keybind NOTE : Introduced feature in v0.3.1. keybind is a Svelte Action , which runs a on_bind(event: IKeybindEvent): void callback whenever your assigned element has focus. <script> import { Box, TextInput, keybind, } from \"@kahi-ui/framework\"; let input_active = false; let window_active = false; </script> <svelte:window use:keybind={{ binds: \"shift+m\", on_bind: (event) => (window_active = event.detail.active), }} /> <Box palette={window_active ? \"affirmative\" : \"negative\"} padding=\"small\" > Press SHIFT+M to activate bind. </Box> <br /> <TextInput placeholder=\"Click inside of me for focus, and press CTRL+ENTER to activate bind.\" palette={input_active ? \"affirmative\" : \"negative\"} actions={[ [ keybind, { binds: \"control+enter\", on_bind: (event) => (input_active = event.detail.active), }, ], ]} /> Imports import { keybind, action_activate, action_exit, action_submit, navigate_down, navigate_left, navigate_right, navigate_up, } from \"@kahi-ui/framework\"; Compatibility Svelte Actions are always ran on the Browser only with Javascript is enabled. So should not be used for critical end-user functionality, only progressive enhancement. Built-In Shortcuts NOTE : Introduced feature in v0.5.3. The Framework provides a series of built-in keybinds using pre-configured standard keybinds that you can use in your own code. action_activate — Used for activating the current context, e.g. a focused label. Enter, (space) action_exit — Used for exiting the current context, e.g. a prompt. Esc action_submit — Used for submitting the current context, e.g. a focused input. Enter navigate_down — Used for navigating to the next item down. ArrowDown Repeatable, 250ms throttle navigate_left — Used for navigating to the next item left. ArrowLeft Repeatable, 250ms throttle navigate_right — Used for navigating to the next item right. ArrowRight Repeatable, 250ms throttle navigate_up — Used for navigating to the next item up. ArrowUp Repeatable, 250ms throttle <script> import { TextInput, action_submit, } from \"@kahi-ui/framework\"; let active = false; let value = \"\"; </script> <TextInput palette={active ? \"affirmative\" : \"negative\"} placeholder=\"Enter a value and then press enter.\" actions={[ [ action_submit, { on_bind: (event) => { active = event.detail.active; if (active) { alert( `You submitted \"${value}\" as your input!` ); } }, }, ], ]} bind:value /> Binding You can configure which set of keys you want to activate the binding by listing the Key Values in a key1+key2+keyN format via the IKeybindOptions.binds: string | string[] option. You can (theoretically ) listen to as many keys as you want. <script> import {Box, keybind} from \"@kahi-ui/framework\"; let active = false; </script> <svelte:window use:keybind={{ binds: \"shift+m\", on_bind: (event) => (active = event.detail.active), }} /> <Box palette={active ? \"affirmative\" : \"negative\"} padding=\"small\" > Press SHIFT+M to activate bind. </Box> You can also have a single binding listen to multiple sets of keys by passing in an array. <script> import { Box, Text, keybind, } from \"@kahi-ui/framework\"; let active = false; </script> <svelte:window use:keybind={{ binds: [\"control+enter\", \"shift+m\"], on_bind: (event) => (active = event.detail.active), }} /> <Box palette={active ? \"affirmative\" : \"negative\"} padding=\"small\" > Press CTRL+ENTER <Text is=\"strong\">OR</Text> SHIFT+M to activate bind. </Box> Active Binding You can detect if the keybind is currently being pressed via the IKeybindEvent.detail.active member. Event Management Just like with regular events, you can use IKeybindEvent.preventDefault: () => void / IKeybindEvent.stopPropagation: () => void functions to cancel propagation / the Browser using default behavior. <script> import { Box, Code, keybind, } from \"@kahi-ui/framework\"; let active = false; </script> <svelte:window use:keybind={{ binds: \"f5\", on_bind: (event) => { event.preventDefault(); active = event.detail.active; }, }} /> <Box palette={active ? \"affirmative\" : \"negative\"} padding=\"small\" > Press F5 to activate bind. </Box> Repeat You can enable listening to repeat binding activations (e.g. binding being held down) via the IKeybindOptions.repeat: boolean option. And then detect if the current callback is a repeat via the IKeybindEvent.detail.repeat member. <script> import { Box, Code, keybind, } from \"@kahi-ui/framework\"; let active = false; let value = \"\"; </script> <svelte:window use:keybind={{ binds: \"shift+m\", repeat: true, on_bind: (event) => { active = event.detail.active; if (event.detail.repeat) { value += \"I am on repeat!\\n\"; } }, }} /> <Box palette={active ? \"affirmative\" : \"negative\"} padding=\"small\" > Press and hold SHIFT+M to activate bind. </Box> <Code is=\"pre\"> {value} </Code> Throttling When listening to repeat binding activations, you can throttle activation callbacks for every N amount of milliseconds via the IKeybindOptions.repeat_throttle: number option. <script> import { Box, Code, keybind, } from \"@kahi-ui/framework\"; let active = false; let value = \"\"; </script> <svelte:window use:keybind={{ binds: \"shift+m\", repeat: true, repeat_throttle: 100, on_bind: (event) => { active = event.detail.active; if (event.detail.repeat) { value += \"I am on repeat!\\n\"; } }, }} /> <Box palette={active ? \"affirmative\" : \"negative\"} padding=\"small\" > Press and hold SHIFT+M to activate bind. </Box> <Code is=\"pre\"> {value} </Code> NOTE : Introduced feature in v0.4.13. NOTE : By using throttle_cancel in this pseudo search UI, the Browser scrolling via arrow keys is disabled. You can also enable the keybind Action to automatically call preventDefault / stopPropagation on all throttled keydown / keyup events via the IKeybindOptions.throttle_cancel: boolean option. <script> import { Box, Code, TextInput, Scrollable, Stack, keybind, } from \"@kahi-ui/framework\"; import {tick} from \"svelte\"; let scrollable_element; let active = false; let current = 0; async function update_scrollable() { // NOTE: Have to wait for the DOM to update after our render runs again await tick(); const current_element = scrollable_element.querySelector( `[data-palette=\"accent\"]` ); if (current_element) { current_element.scrollIntoView({ block: \"nearest\", behavior: \"smooth\", }); } } </script> <TextInput palette={active ? \"affirmative\" : \"negative\"} placeholder=\"Focus me and press and hold ARROWDOWN / ARROWUP\" actions={[ [ keybind, { binds: \"arrowdown\", repeat: true, repeat_throttle: 100, throttle_cancel: true, on_bind: (event) => { if (!event.detail.active) return; event.preventDefault(); current = Math.min(current + 1, 9); update_scrollable(); }, }, ], [ keybind, { binds: \"arrowup\", repeat: true, repeat_throttle: 100, throttle_cancel: true, on_bind: (event) => { if (!event.detail.active) return; event.preventDefault(); current = Math.max(current - 1, 0); update_scrollable(); }, }, ], ]} on:focusin={() => (active = true)} on:focusout={() => (active = false)} /> <Box> <Scrollable bind:element={scrollable_element} style=\"height:5rem;\" > {#each new Array(10).fill(null) as _, index} <Box palette={current === index ? \"accent\" : \"auto\"} > Search Result #{index + 1} </Box> {/each} </Scrollable> </Box> "},{"identifier":"/docs/actions/lost_focus","title":"lost_focus","text":"lost_focus NOTE : Introduced feature in v0.5.0. lost_focus is a Svelte Action , which runs a on_lost_focus(): void callback whenever another element is focused which is not a child of the attached element, OR, the Browser window / tab is no longer actively focused. <script> import { Button, TextInput, lost_focus, } from \"@kahi-ui/framework\"; let has_focus = false; </script> <TextInput palette={has_focus ? \"affirmative\" : \"negative\"} actions={[ [ lost_focus, { enabled: has_focus, on_lost_focus: () => (has_focus = false), }, ], ]} on:focusin={() => (has_focus = true)} /> <Button>Focus me!</Button> Imports import {lost_focus} from \"@kahi-ui/framework\"; Compatibility Svelte Actions are always ran on Javascript-enabled Browser. So should not be used for critical end-user functionality, only progressive enhancement. Ignore You can ignore elements that matches a given CSS Selector via the ILostFocusOptions.ignore: string option. TODO : snippet "},{"identifier":"/docs/actions/mutation_observer","title":"mutation_observer","text":"mutation_observer NOTE : Introduced feature in v0.4.1. mutation_observer is a Svelte Action , which runs a on_mutate(mutations: MutationRecord[]): void callback whenever the targetted element intersects the root viewport. <script> import { Button, mutation_observer, } from \"@kahi-ui/framework\"; let palette = \"affirmative\"; </script> <Button on:click={(event) => (palette = palette === \"affirmative\" ? \"negative\" : \"affirmative\")} > Toggle Palette </Button> <div class=\"box\" data-palette={palette} use:mutation_observer={{ attributes: true, on_mutate: (mutations) => console.log(\"on_mutate\", {mutations}), }} > click the above button and watch console for logging </div> Imports import {mutation_observer} from \"@kahi-ui/framework\"; Compatibility Svelte Actions are always ran on Javascript-enabled Browser. So should not be used for critical end-user functionality, only progressive enhancement. The Action is dependent on MutationObserver . "},{"identifier":"/docs/actions/overflow_clipping","title":"overflow_clipping","text":"overflow_clipping NOTE : Introduced feature in v0.4.13. IMPORTANT : overflow_clipping only detects if the attached element has is clipping on a given axis, not if the scrollbar is visible. WARNING : This feature can cause performance degradation while enabled. overflow_clipping is a Svelte Action , which when IOverflowClippingOptions.enabled: boolean is true, runs the IOverflowClippingOptions.on_clip: (entry: {horizontal: boolean, vertical: boolean}) => void callback. Whenever content is clipping the bounding box of the attached element. <script> import { Box, Check, Heading, Scrollable, overflow_clipping, } from \"@kahi-ui/framework\"; let additional_content = false; let horizontal_clipping = false; let vertical_clipping = false; </script> <Check id=\"overflow-clipping-preview-content\" bind:state={additional_content} > Toggle on additional content </Check> <Scrollable actions={[ [ overflow_clipping, { enabled: true, on_clip: (entry) => (horizontal_clipping = entry.horizontal), }, ], ]} style=\"width:15rem;\" > <Box palette={horizontal_clipping ? \"affirmative\" : \"negative\"} > <Heading style=\"white-space:nowrap;\"> Hello World! {#if additional_content} And again! {/if} </Heading> </Box> </Scrollable> <Scrollable margin_top=\"medium\" actions={[ [ overflow_clipping, { enabled: true, on_clip: (entry) => (vertical_clipping = entry.vertical), }, ], ]} style=\"height:3rem;\" > <Box palette={vertical_clipping ? \"affirmative\" : \"negative\"} > <Heading>Hello World!</Heading> {#if additional_content} <Heading>And again!</Heading> {/if} </Box> </Scrollable> Imports import {overflow_clipping} from \"@kahi-ui/framework\"; Compatibility Svelte Actions are always ran on Javascript-enabled Browser. So should not be used for critical end-user functionality, only progressive enhancement. "},{"identifier":"/docs/actions/trap_focus","title":"trap_focus","text":"trap_focus NOTE : Introduced feature in v0.4.13. USAGE : This feature can not be demonstrated in the REPL, click the Link button to open in Playground. trap_focus is a Svelte Action , which when ITrapFocusOptions.enabled: boolean is true, traps focus movement (TAB / SHIFT+TAB) to within the attached element's first and last found focusable elements. <script> import { Box, Button, Check, trap_focus, } from \"@kahi-ui/framework\"; let enabled = false; </script> <Box palette={enabled ? \"affirmative\" : \"negative\"} padding=\"small\" > {enabled ? \"unselect the checkbox to disabled focus trapping\" : \"select the checkbox to enable focus trapping\"} </Box> <Check bind:state={enabled} /> <div use:trap_focus={{enabled}}> <Button tabindex=\"3\">Index #3</Button> <Button tabindex=\"1\">Index #1</Button> <Button tabindex=\"5\">Index #5</Button> <Button tabindex=\"4\">Index #4</Button> <Button tabindex=\"2\">Index #2</Button> </div> Imports import {trap_focus} from \"@kahi-ui/framework\"; Compatibility Svelte Actions are always ran on Javascript-enabled Browser. So should not be used for critical end-user functionality, only progressive enhancement. First + Last USAGE : This feature can not be demonstrated in the REPL, click the Link button to open in Playground. You can customize the first / last focusable elements with references or CSS Selectors via the ITrapFocusOptions.first: HTMLElement | string / ITrapFocusOptions.last: HTMLElement | string options. <script> import { Box, Button, Check, trap_focus, } from \"@kahi-ui/framework\"; let first_element; let last_element; let enabled = false; </script> <Box palette={enabled ? \"affirmative\" : \"negative\"} padding=\"small\" > {enabled ? \"unselect the checkbox to disabled focus trapping\" : \"select the checkbox to enable focus trapping\"} </Box> <Check bind:state={enabled} /> <div use:trap_focus={{ first: first_element, enabled, last: last_element, }} > <Button tabindex=\"3\">Index #3</Button> <Button bind:element={first_element} tabindex=\"1\"> Index #1 </Button> <Button tabindex=\"5\" bind:element={last_element} >Index #5</Button > <Button tabindex=\"4\">Index #4</Button> <Button tabindex=\"2\">Index #2</Button> </div> "},{"identifier":"/docs/disclosure/accordion","title":"Accordion","text":"Accordion NOTE : Introduced feature in v0.4.5. Accordion Components are used for displaying related content in a collapsible stack of buttons, that toggles between views. <script> import { Accordion, Heading, Text, } from \"@kahi-ui/framework\"; </script> <Accordion.Container logic_name=\"accordion-preview\"> <Accordion.Group logic_id=\"accordion-preview-1\"> <Accordion.Label palette=\"accent\"> Section One </Accordion.Label> <Accordion.Section> <Heading>Item One Content</Heading> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </Accordion.Section> </Accordion.Group> <Accordion.Group logic_id=\"accordion-preview-2\"> <Accordion.Label palette=\"accent\"> Section Two </Accordion.Label> <Accordion.Section> <Heading>Item Two Content</Heading> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </Accordion.Section> </Accordion.Group> <Accordion.Group logic_id=\"accordion-preview-3\"> <Accordion.Label palette=\"accent\"> Section Three </Accordion.Label> <Accordion.Section> <Heading>Item Three Content</Heading> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </Accordion.Section> </Accordion.Group> </Accordion.Container> Imports <!-- prettier-ignore --> <script> import {Accordion} from \"@kahi-ui/framework\"; const { Container, Label, Group, Section } = Accordion; </script> Logic State NOTE : Introduced feature in v0.5.2. WARNING : This feature is only available in Javascript-enabled clients. You can manually choose which <Accordion.Section> Components are active via the logic_state property. <script> import { Accordion, Button, Heading, Text, } from \"@kahi-ui/framework\"; let logic_state = \"accordion-logic-state-1\"; </script> <Button on:click={() => (logic_state = \"accordion-logic-state-1\")} > Select Section One </Button> <Button on:click={() => (logic_state = \"accordion-logic-state-2\")} > Select Section Two </Button> <Button on:click={() => (logic_state = \"accordion-logic-state-3\")} > Select Section Three </Button> <Accordion.Container logic_name=\"accordion-logic-state\" bind:logic_state > <Accordion.Group logic_id=\"accordion-logic-state-1\" > <Accordion.Label palette=\"accent\"> Section One </Accordion.Label> <Accordion.Section> <Heading>Item One Content</Heading> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </Accordion.Section> </Accordion.Group> <Accordion.Group logic_id=\"accordion-logic-state-2\" > <Accordion.Label palette=\"accent\"> Section Two </Accordion.Label> <Accordion.Section> <Heading>Item Two Content</Heading> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </Accordion.Section> </Accordion.Group> <Accordion.Group logic_id=\"accordion-logic-state-3\" > <Accordion.Label palette=\"accent\"> Section Three </Accordion.Label> <Accordion.Section> <Heading>Item Three Content</Heading> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </Accordion.Section> </Accordion.Group> </Accordion.Container> Inclusive You can change the behavior of the Accordion to allow multiple items to be revealed at once via the behavior property. <script> import { Accordion, Heading, Text, } from \"@kahi-ui/framework\"; </script> <Accordion.Container behavior=\"inclusive\" logic_name=\"accordion-inclusive\" > <Accordion.Group logic_id=\"accordion-inclusive-1\"> <Accordion.Label palette=\"accent\"> Section One </Accordion.Label> <Accordion.Section> <Heading>Item One Content</Heading> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </Accordion.Section> </Accordion.Group> <Accordion.Group logic_id=\"accordion-inclusive-2\"> <Accordion.Label palette=\"accent\"> Section Two </Accordion.Label> <Accordion.Section> <Heading>Item Two Content</Heading> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </Accordion.Section> </Accordion.Group> <Accordion.Group logic_id=\"accordion-inclusive-3\"> <Accordion.Label palette=\"accent\"> Section Three </Accordion.Label> <Accordion.Section> <Heading>Item Three Content</Heading> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </Accordion.Section> </Accordion.Group> </Accordion.Container> Slot NOTE : Introduced feature in v0.5.2. You can customize the icons the icons that represent the if an <Accordion.Section> Component is open or not via the close / open slots. <script> import { Accordion, Heading, Text, } from \"@kahi-ui/framework\"; </script> <Accordion.Container logic_name=\"accordion-slot\"> <Accordion.Group logic_id=\"accordion-slot-1\"> <Accordion.Label palette=\"accent\"> Section One <svelte:fragment slot=\"close\"> <Text is=\"span\">-</Text> </svelte:fragment> <svelte:fragment slot=\"open\"> <Text is=\"span\">+</Text> </svelte:fragment> </Accordion.Label> <Accordion.Section> <Heading>Item One Content</Heading> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </Accordion.Section> </Accordion.Group> <Accordion.Group logic_id=\"accordion-slot-2\"> <Accordion.Label palette=\"accent\"> Section Two <svelte:fragment slot=\"close\"> <Text is=\"span\">-</Text> </svelte:fragment> <svelte:fragment slot=\"open\"> <Text is=\"span\">+</Text> </svelte:fragment> </Accordion.Label> <Accordion.Section> <Heading>Item Two Content</Heading> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </Accordion.Section> </Accordion.Group> <Accordion.Group logic_id=\"accordion-slot-3\"> <Accordion.Label palette=\"accent\"> Section Three <svelte:fragment slot=\"close\"> <Text is=\"span\">-</Text> </svelte:fragment> <svelte:fragment slot=\"open\"> <Text is=\"span\">+</Text> </svelte:fragment> </Accordion.Label> <Accordion.Section> <Heading>Item Three Content</Heading> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </Accordion.Section> </Accordion.Group> </Accordion.Container> Palette You can change the color palette of the Accordion buttons via the palette property. <script> import { Accordion, Heading, Text, } from \"@kahi-ui/framework\"; </script> <Accordion.Container logic_name=\"accordion-palette\"> <Accordion.Group logic_id=\"accordion-palette-default\" > <Accordion.Label> DEFAULT Section </Accordion.Label> <Accordion.Section> <Heading>DEFAULT Content</Heading> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </Accordion.Section> </Accordion.Group> <Accordion.Group logic_id=\"accordion-palette-accent\" > <Accordion.Label palette=\"accent\"> ACCENT Section </Accordion.Label> <Accordion.Section> <Heading>ACCENT Content</Heading> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </Accordion.Section> </Accordion.Group> <Accordion.Group logic_id=\"accordion-palette-neutral\" > <Accordion.Label palette=\"neutral\"> NEUTRAL Section </Accordion.Label> <Accordion.Section> <Heading>NEUTRAL Content</Heading> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </Accordion.Section> </Accordion.Group> <Accordion.Group logic_id=\"accordion-palette-dark\"> <Accordion.Label palette=\"dark\"> DARK Section </Accordion.Label> <Accordion.Section> <Heading>DARK Content</Heading> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </Accordion.Section> </Accordion.Group> <Accordion.Group logic_id=\"accordion-palette-light\" > <Accordion.Label palette=\"light\"> LIGHT Section </Accordion.Label> <Accordion.Section> <Heading>LIGHT Content</Heading> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </Accordion.Section> </Accordion.Group> <Accordion.Group logic_id=\"accordion-palette-alert\" > <Accordion.Label palette=\"alert\"> ALERT Section </Accordion.Label> <Accordion.Section> <Heading>ALERT Content</Heading> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </Accordion.Section> </Accordion.Group> <Accordion.Group logic_id=\"accordion-palette-affirmative\" > <Accordion.Label palette=\"affirmative\"> AFFIRMATIVE Section </Accordion.Label> <Accordion.Section> <Heading>AFFIRMATIVE Content</Heading> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </Accordion.Section> </Accordion.Group> <Accordion.Group logic_id=\"accordion-palette-informative\" > <Accordion.Label palette=\"informative\"> INFORMATIVE Section </Accordion.Label> <Accordion.Section> <Heading>INFORMATIVE Content</Heading> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </Accordion.Section> </Accordion.Group> <Accordion.Group logic_id=\"accordion-palette-negative\" > <Accordion.Label palette=\"negative\"> NEGATIVE Section </Accordion.Label> <Accordion.Section> <Heading>NEGATIVE Content</Heading> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </Accordion.Section> </Accordion.Group> </Accordion.Container> Loading USAGE : Use your Browser's devtools to observe this feature. You can customize the slot loading behavior of individual Accordion.Section Components to not render their children, via the loading property. <script> import { Accordion, Heading, Text, } from \"@kahi-ui/framework\"; </script> <Accordion.Container logic_name=\"accordion-loading\"> <Accordion.Group logic_id=\"accordion-loading-1\"> <Accordion.Label palette=\"accent\"> Section One </Accordion.Label> <Accordion.Section loading=\"lazy\"> <Heading>Item One Content</Heading> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </Accordion.Section> </Accordion.Group> <Accordion.Group logic_id=\"accordion-loading-2\"> <Accordion.Label palette=\"accent\"> Section Two </Accordion.Label> <Accordion.Section loading=\"lazy\"> <Heading>Item Two Content</Heading> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </Accordion.Section> </Accordion.Group> <Accordion.Group logic_id=\"accordion-loading-3\"> <Accordion.Label palette=\"accent\"> Section Three </Accordion.Label> <Accordion.Section loading=\"lazy\"> <Heading>Item Three Content</Heading> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </Accordion.Section> </Accordion.Group> </Accordion.Container> Transitions You can use Transition Components to provide fancy switching animations. <script> import { Accordion, Heading, Text, Transition, } from \"@kahi-ui/framework\"; </script> <Accordion.Container logic_name=\"accordion-transitions\" > <Accordion.Group logic_id=\"accordion-transitions-1\" > <Accordion.Label palette=\"accent\"> Section One </Accordion.Label> <Accordion.Section> <Transition animation=\"fade\" variation=\"enter\" > <Heading>Item One Content</Heading> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </Transition> </Accordion.Section> </Accordion.Group> <Accordion.Group logic_id=\"accordion-transitions-2\" > <Accordion.Label palette=\"accent\"> Section Two </Accordion.Label> <Accordion.Section> <Transition animation=\"fade\" variation=\"enter\" > <Heading>Item Two Content</Heading> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </Transition> </Accordion.Section> </Accordion.Group> <Accordion.Group logic_id=\"accordion-transitions-3\" > <Accordion.Label palette=\"accent\"> Section Three </Accordion.Label> <Accordion.Section> <Transition animation=\"fade\" variation=\"enter\" > <Heading>Item Three Content</Heading> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </Transition> </Accordion.Section> </Accordion.Group> </Accordion.Container> "},{"identifier":"/docs/disclosure/carousel","title":"Carousel","text":"Carousel NOTE : Introduced feature in v0.4.6. Carousel allows the user to scroll through \"slides\" of content without having to extend the page dimensions. <script> import { Box, Carousel, Center, } from \"@kahi-ui/framework\"; </script> <Carousel.Container class=\"carousel-preview\"> <Carousel.Section> <Box palette=\"negative\"> <Center height=\"100\">300 x 200</Center> </Box> </Carousel.Section> <Carousel.Section> <Box palette=\"affirmative\"> <Center height=\"100\">300 x 200</Center> </Box> </Carousel.Section> <Carousel.Section> <Box palette=\"alert\"> <Center height=\"100\">300 x 200</Center> </Box> </Carousel.Section> </Carousel.Container> <style> :global(.carousel-preview) { width: 300px; height: 200px; } </style> Imports <script> import {Carousel} from \"@kahi-ui/framework\"; const {Container, Section} = Carousel; </script> Orientation You can set the Carousel to render vertically via the orientation property. <script> import { Box, Carousel, Center, } from \"@kahi-ui/framework\"; </script> <Carousel.Container class=\"carousel-orientation\" orientation=\"vertical\" > <Carousel.Section> <Box palette=\"negative\"> <Center height=\"100\">300 x 200</Center> </Box> </Carousel.Section> <Carousel.Section> <Box palette=\"affirmative\"> <Center height=\"100\">300 x 200</Center> </Box> </Carousel.Section> <Carousel.Section> <Box palette=\"alert\"> <Center height=\"100\">300 x 200</Center> </Box> </Carousel.Section> </Carousel.Container> <style> :global(.carousel-orientation) { width: 300px; height: 200px; } </style> Spacing NOTE : By passing an array, you can set responsive values . e.g. spacing={[\"medium\", \"tablet:small\", \"mobile:tiny\"]} You can adjust the spacing between items via the spacing, spacing_x, and spacing_y properties. <script> import { Box, Carousel, Center, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container class=\"carousel-spacing\" orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div> <Text is=\"strong\">DEFAULT</Text> <Carousel.Container> <Carousel.Section> <Box palette=\"negative\"> <Center height=\"100\"> 300 x 200 </Center> </Box> </Carousel.Section> <Carousel.Section> <Box palette=\"affirmative\"> <Center height=\"100\"> 300 x 200 </Center> </Box> </Carousel.Section> <Carousel.Section> <Box palette=\"alert\"> <Center height=\"100\"> 300 x 200 </Center> </Box> </Carousel.Section> </Carousel.Container> </div> <div> <Text is=\"strong\">NANO</Text> <Carousel.Container spacing=\"nano\"> <Carousel.Section> <Box palette=\"negative\"> <Center height=\"100\"> 300 x 200 </Center> </Box> </Carousel.Section> <Carousel.Section> <Box palette=\"affirmative\"> <Center height=\"100\"> 300 x 200 </Center> </Box> </Carousel.Section> <Carousel.Section> <Box palette=\"alert\"> <Center height=\"100\"> 300 x 200 </Center> </Box> </Carousel.Section> </Carousel.Container> </div> <div> <Text is=\"strong\">TINY</Text> <Carousel.Container spacing=\"tiny\"> <Carousel.Section> <Box palette=\"negative\"> <Center height=\"100\"> 300 x 200 </Center> </Box> </Carousel.Section> <Carousel.Section> <Box palette=\"affirmative\"> <Center height=\"100\"> 300 x 200 </Center> </Box> </Carousel.Section> <Carousel.Section> <Box palette=\"alert\"> <Center height=\"100\"> 300 x 200 </Center> </Box> </Carousel.Section> </Carousel.Container> </div> <div> <Text is=\"strong\">SMALL</Text> <Carousel.Container spacing=\"small\"> <Carousel.Section> <Box palette=\"negative\"> <Center height=\"100\"> 300 x 200 </Center> </Box> </Carousel.Section> <Carousel.Section> <Box palette=\"affirmative\"> <Center height=\"100\"> 300 x 200 </Center> </Box> </Carousel.Section> <Carousel.Section> <Box palette=\"alert\"> <Center height=\"100\"> 300 x 200 </Center> </Box> </Carousel.Section> </Carousel.Container> </div> <div> <Text is=\"strong\">MEDIUM</Text> <Carousel.Container spacing=\"medium\"> <Carousel.Section> <Box palette=\"negative\"> <Center height=\"100\"> 300 x 200 </Center> </Box> </Carousel.Section> <Carousel.Section> <Box palette=\"affirmative\"> <Center height=\"100\"> 300 x 200 </Center> </Box> </Carousel.Section> <Carousel.Section> <Box palette=\"alert\"> <Center height=\"100\"> 300 x 200 </Center> </Box> </Carousel.Section> </Carousel.Container> </div> <div> <Text is=\"strong\">LARGE</Text> <Carousel.Container spacing=\"large\"> <Carousel.Section> <Box palette=\"negative\"> <Center height=\"100\"> 300 x 200 </Center> </Box> </Carousel.Section> <Carousel.Section> <Box palette=\"affirmative\"> <Center height=\"100\"> 300 x 200 </Center> </Box> </Carousel.Section> <Carousel.Section> <Box palette=\"alert\"> <Center height=\"100\"> 300 x 200 </Center> </Box> </Carousel.Section> </Carousel.Container> </div> <div> <Text is=\"strong\">HUGE</Text> <Carousel.Container spacing=\"huge\"> <Carousel.Section> <Box palette=\"negative\"> <Center height=\"100\"> 300 x 200 </Center> </Box> </Carousel.Section> <Carousel.Section> <Box palette=\"affirmative\"> <Center height=\"100\"> 300 x 200 </Center> </Box> </Carousel.Section> <Carousel.Section> <Box palette=\"alert\"> <Center height=\"100\"> 300 x 200 </Center> </Box> </Carousel.Section> </Carousel.Container> </div> <div> <Text is=\"strong\">MASSIVE</Text> <Carousel.Container spacing=\"massive\"> <Carousel.Section> <Box palette=\"negative\"> <Center height=\"100\"> 300 x 200 </Center> </Box> </Carousel.Section> <Carousel.Section> <Box palette=\"affirmative\"> <Center height=\"100\"> 300 x 200 </Center> </Box> </Carousel.Section> <Carousel.Section> <Box palette=\"alert\"> <Center height=\"100\"> 300 x 200 </Center> </Box> </Carousel.Section> </Carousel.Container> </div> </Stack.Container> <style> :global(.carousel-spacing) :global(.carousel) { width: 300px; height: 200px; } </style> "},{"identifier":"/docs/disclosure/tab","title":"Tab","text":"Tab NOTE : Introduced feature in v0.3.1. Tab Components are used for turning what would be multi-page content, into a block of multiple views with a set of radio buttons to toggle between. <script> import { Heading, Tab, Text, } from \"@kahi-ui/framework\"; </script> <Tab.Container logic_name=\"tab-preview\" logic_state=\"tab-preview-1\" alignment_x=\"stretch\" > <Tab.Group logic_id=\"tab-preview-1\"> <Tab.Label palette=\"accent\">Tab One</Tab.Label> <Tab.Section> <Heading>Tab One Content</Heading> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. </Text> </Tab.Section> </Tab.Group> <Tab.Group logic_id=\"tab-preview-2\"> <Tab.Label palette=\"accent\">Tab Two</Tab.Label> <Tab.Section> <Heading>Tab Two Content</Heading> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. </Text> </Tab.Section> </Tab.Group> <Tab.Group logic_id=\"tab-preview-3\"> <Tab.Label palette=\"accent\"> Tab Three </Tab.Label> <Tab.Section> <Heading>Tab Three Content</Heading> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. </Text> </Tab.Section> </Tab.Group> </Tab.Container> Imports <!-- prettier-ignore --> <script> import {Tab} from \"@kahi-ui/framework\"; const { Container, Anchor, Label, Group, Section, } = Tab; </script> Logic State NOTE : Introduced feature in v0.5.2. WARNING : This feature is only available in Javascript-enabled clients. You can manually choose which <Tab.Section> Component is active via the logic_state property. <script> import { Button, Heading, Tab, Text, } from \"@kahi-ui/framework\"; let logic_state = \"tab-logic-state-1\"; </script> <Button on:click={() => (logic_state = \"tab-logic-state-1\")} > Select Tab One </Button> <Button on:click={() => (logic_state = \"tab-logic-state-2\")} > Select Tab Two </Button> <Button on:click={() => (logic_state = \"tab-logic-state-3\")} > Select Tab Three </Button> <Tab.Container logic_name=\"tab-logic-state\" alignment_x=\"stretch\" bind:logic_state > <Tab.Group logic_id=\"tab-logic-state-1\"> <Tab.Label palette=\"accent\">Tab One</Tab.Label> <Tab.Section> <Heading>Tab One Content</Heading> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </Tab.Section> </Tab.Group> <Tab.Group logic_id=\"tab-logic-state-2\"> <Tab.Label palette=\"accent\">Tab Two</Tab.Label> <Tab.Section> <Heading>Tab Two Content</Heading> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </Tab.Section> </Tab.Group> <Tab.Group logic_id=\"tab-logic-state-3\"> <Tab.Label palette=\"accent\"> Tab Three </Tab.Label> <Tab.Section> <Heading>Tab Three Content</Heading> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </Tab.Section> </Tab.Group> </Tab.Container> Palette You can change the color palette of the Tab radio buttons via the palette property. <script> import {Heading, Tab} from \"@kahi-ui/framework\"; </script> <Tab.Container logic_name=\"tab-palette\" logic_state=\"tab-palette-default\" > <Tab.Group logic_id=\"tab-palette-default\"> <Tab.Label>Tab DEFAULT</Tab.Label> <Tab.Section> <Heading>Tab DEFAULT Content</Heading> </Tab.Section> </Tab.Group> <Tab.Group logic_id=\"tab-palette-accent\"> <Tab.Label palette=\"accent\"> Tab ACCENT </Tab.Label> <Tab.Section> <Heading>Tab ACCENT Content</Heading> </Tab.Section> </Tab.Group> <Tab.Group logic_id=\"tab-palette-neutral\"> <Tab.Label palette=\"neutral\"> Tab NEUTRAL </Tab.Label> <Tab.Section> <Heading>Tab NEUTRAL Content</Heading> </Tab.Section> </Tab.Group> <Tab.Group logic_id=\"tab-palette-dark\"> <Tab.Label palette=\"dark\">Tab DARK</Tab.Label> <Tab.Section> <Heading>Tab DARK Content</Heading> </Tab.Section> </Tab.Group> <Tab.Group logic_id=\"tab-palette-light\"> <Tab.Label palette=\"light\"> Tab LIGHT </Tab.Label> <Tab.Section> <Heading>Tab LIGHT Content</Heading> </Tab.Section> </Tab.Group> <Tab.Group logic_id=\"tab-palette-alert\"> <Tab.Label palette=\"alert\"> Tab ALERT </Tab.Label> <Tab.Section> <Heading>Tab ALERT Content</Heading> </Tab.Section> </Tab.Group> <Tab.Group logic_id=\"tab-palette-affirmative\"> <Tab.Label palette=\"affirmative\"> Tab AFFIRMATIVE </Tab.Label> <Tab.Section> <Heading>Tab AFFIRMATIVE Content</Heading> </Tab.Section> </Tab.Group> <Tab.Group logic_id=\"tab-palette-informative\"> <Tab.Label palette=\"informative\"> Tab INFORMATIVE </Tab.Label> <Tab.Section> <Heading>Tab INFORMATIVE Content</Heading> </Tab.Section> </Tab.Group> <Tab.Group logic_id=\"tab-palette-negative\"> <Tab.Label palette=\"negative\"> Tab NEGATIVE </Tab.Label> <Tab.Section> <Heading>Tab NEGATIVE Content</Heading> </Tab.Section> </Tab.Group> </Tab.Container> Sizing You can alter how large each Tab radio button should be via the sizing property. <script> import { Heading, Stack, Tab, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container spacing=\"medium\"> <div> <Text is=\"strong\">DEFAULT</Text> <Tab.Container logic_name=\"tab-sizing-default\" logic_state=\"tab-sizing-default-1\" > <Tab.Group logic_id=\"tab-sizing-default-1\"> <Tab.Label palette=\"accent\"> Tab One </Tab.Label> <Tab.Section> <Heading>Tab One Content</Heading> </Tab.Section> </Tab.Group> <Tab.Group logic_id=\"tab-sizing-default-2\"> <Tab.Label palette=\"accent\"> Tab Two </Tab.Label> <Tab.Section> <Heading>Tab Two Content</Heading> </Tab.Section> </Tab.Group> <Tab.Group logic_id=\"tab-sizing-default-3\"> <Tab.Label palette=\"accent\"> Tab Three </Tab.Label> <Tab.Section> <Heading> Tab Three Content </Heading> </Tab.Section> </Tab.Group> </Tab.Container> </div> <div> <Text is=\"strong\">NANO</Text> <Tab.Container logic_name=\"tab-sizing-nano\" logic_state=\"tab-sizing-nano-1\" sizing=\"nano\" > <Tab.Group logic_id=\"tab-sizing-nano-1\"> <Tab.Label palette=\"accent\"> Tab One </Tab.Label> <Tab.Section> <Heading>Tab One Content</Heading> </Tab.Section> </Tab.Group> <Tab.Group logic_id=\"tab-sizing-nano-2\"> <Tab.Label palette=\"accent\"> Tab Two </Tab.Label> <Tab.Section> <Heading>Tab Two Content</Heading> </Tab.Section> </Tab.Group> <Tab.Group logic_id=\"tab-sizing-nano-3\"> <Tab.Label palette=\"accent\"> Tab Three </Tab.Label> <Tab.Section> <Heading> Tab Three Content </Heading> </Tab.Section> </Tab.Group> </Tab.Container> </div> <div> <Text is=\"strong\">TINY</Text> <Tab.Container logic_name=\"tab-sizing-tiny\" logic_state=\"tab-sizing-tiny-1\" sizing=\"tiny\" > <Tab.Group logic_id=\"tab-sizing-tiny-1\"> <Tab.Label palette=\"accent\"> Tab One </Tab.Label> <Tab.Section> <Heading>Tab One Content</Heading> </Tab.Section> </Tab.Group> <Tab.Group logic_id=\"tab-sizing-tiny-2\"> <Tab.Label palette=\"accent\"> Tab Two </Tab.Label> <Tab.Section> <Heading>Tab Two Content</Heading> </Tab.Section> </Tab.Group> <Tab.Group logic_id=\"tab-sizing-tiny-3\"> <Tab.Label palette=\"accent\"> Tab Three </Tab.Label> <Tab.Section> <Heading> Tab Three Content </Heading> </Tab.Section> </Tab.Group> </Tab.Container> </div> <div> <Text is=\"strong\">SMALL</Text> <Tab.Container logic_name=\"tab-sizing-small\" logic_state=\"tab-sizing-small-1\" sizing=\"small\" > <Tab.Group logic_id=\"tab-sizing-small-1\"> <Tab.Label palette=\"accent\"> Tab One </Tab.Label> <Tab.Section> <Heading>Tab One Content</Heading> </Tab.Section> </Tab.Group> <Tab.Group logic_id=\"tab-sizing-small-2\"> <Tab.Label palette=\"accent\"> Tab Two </Tab.Label> <Tab.Section> <Heading>Tab Two Content</Heading> </Tab.Section> </Tab.Group> <Tab.Group logic_id=\"tab-sizing-small-3\"> <Tab.Label palette=\"accent\"> Tab Three </Tab.Label> <Tab.Section> <Heading> Tab Three Content </Heading> </Tab.Section> </Tab.Group> </Tab.Container> </div> <div> <Text is=\"strong\">MEDIUM</Text> <Tab.Container logic_name=\"tab-sizing-medium\" logic_state=\"tab-sizing-medium-1\" sizing=\"medium\" > <Tab.Group logic_id=\"tab-sizing-medium-1\"> <Tab.Label palette=\"accent\"> Tab One </Tab.Label> <Tab.Section> <Heading>Tab One Content</Heading> </Tab.Section> </Tab.Group> <Tab.Group logic_id=\"tab-sizing-medium-2\"> <Tab.Label palette=\"accent\"> Tab Two </Tab.Label> <Tab.Section> <Heading>Tab Two Content</Heading> </Tab.Section> </Tab.Group> <Tab.Group logic_id=\"tab-sizing-medium-3\"> <Tab.Label palette=\"accent\"> Tab Three </Tab.Label> <Tab.Section> <Heading> Tab Three Content </Heading> </Tab.Section> </Tab.Group> </Tab.Container> </div> <div> <Text is=\"strong\">LARGE</Text> <Tab.Container logic_name=\"tab-sizing-large\" logic_state=\"tab-sizing-large-1\" sizing=\"large\" > <Tab.Group logic_id=\"tab-sizing-large-1\"> <Tab.Label palette=\"accent\"> Tab One </Tab.Label> <Tab.Section> <Heading>Tab One Content</Heading> </Tab.Section> </Tab.Group> <Tab.Group logic_id=\"tab-sizing-large-2\"> <Tab.Label palette=\"accent\"> Tab Two </Tab.Label> <Tab.Section> <Heading>Tab Two Content</Heading> </Tab.Section> </Tab.Group> <Tab.Group logic_id=\"tab-sizing-large-3\"> <Tab.Label palette=\"accent\"> Tab Three </Tab.Label> <Tab.Section> <Heading> Tab Three Content </Heading> </Tab.Section> </Tab.Group> </Tab.Container> </div> <div> <Text is=\"strong\">HUGE</Text> <Tab.Container logic_name=\"tab-sizing-huge\" logic_state=\"tab-sizing-huge-1\" sizing=\"huge\" > <Tab.Group logic_id=\"tab-sizing-huge-1\"> <Tab.Label palette=\"accent\"> Tab One </Tab.Label> <Tab.Section> <Heading>Tab One Content</Heading> </Tab.Section> </Tab.Group> <Tab.Group logic_id=\"tab-sizing-huge-2\"> <Tab.Label palette=\"accent\"> Tab Two </Tab.Label> <Tab.Section> <Heading>Tab Two Content</Heading> </Tab.Section> </Tab.Group> <Tab.Group logic_id=\"tab-sizing-huge-3\"> <Tab.Label palette=\"accent\"> Tab Three </Tab.Label> <Tab.Section> <Heading> Tab Three Content </Heading> </Tab.Section> </Tab.Group> </Tab.Container> </div> <div> <Text is=\"strong\">MASSIVE</Text> <Tab.Container logic_name=\"tab-sizing-massive\" logic_state=\"tab-sizing-massive-1\" sizing=\"massive\" > <Tab.Group logic_id=\"tab-sizing-massive-1\"> <Tab.Label palette=\"accent\"> Tab One </Tab.Label> <Tab.Section> <Heading>Tab One Content</Heading> </Tab.Section> </Tab.Group> <Tab.Group logic_id=\"tab-sizing-massive-2\"> <Tab.Label palette=\"accent\"> Tab Two </Tab.Label> <Tab.Section> <Heading>Tab Two Content</Heading> </Tab.Section> </Tab.Group> <Tab.Group logic_id=\"tab-sizing-massive-3\"> <Tab.Label palette=\"accent\"> Tab Three </Tab.Label> <Tab.Section> <Heading> Tab Three Content </Heading> </Tab.Section> </Tab.Group> </Tab.Container> </div> </Stack.Container> Alignment You can change the alignment of each Tab radio button via the alignment_x property. <script> import { Heading, Stack, Tab, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container spacing=\"medium\"> <div> <Text is=\"strong\">LEFT</Text> <Tab.Container logic_name=\"tab-alignment-left\" logic_state=\"tab-alignment-left-1\" > <Tab.Group logic_id=\"tab-alignment-left-1\"> <Tab.Label palette=\"accent\"> Tab One </Tab.Label> <Tab.Section> <Heading>Tab One Content</Heading> </Tab.Section> </Tab.Group> <Tab.Group logic_id=\"tab-alignment-left-2\"> <Tab.Label palette=\"accent\"> Tab Two </Tab.Label> <Tab.Section> <Heading>Tab Two Content</Heading> </Tab.Section> </Tab.Group> <Tab.Group logic_id=\"tab-alignment-left-3\"> <Tab.Label palette=\"accent\"> Tab Three </Tab.Label> <Tab.Section> <Heading> Tab Three Content </Heading> </Tab.Section> </Tab.Group> </Tab.Container> </div> <div> <Text is=\"strong\">CENTER</Text> <Tab.Container logic_name=\"tab-alignment-center\" logic_state=\"tab-alignment-center-1\" alignment_x=\"center\" > <Tab.Group logic_id=\"tab-alignment-center-1\" > <Tab.Label palette=\"accent\"> Tab One </Tab.Label> <Tab.Section> <Heading>Tab One Content</Heading> </Tab.Section> </Tab.Group> <Tab.Group logic_id=\"tab-alignment-center-2\" > <Tab.Label palette=\"accent\"> Tab Two </Tab.Label> <Tab.Section> <Heading>Tab Two Content</Heading> </Tab.Section> </Tab.Group> <Tab.Group logic_id=\"tab-alignment-center-3\" > <Tab.Label palette=\"accent\"> Tab Three </Tab.Label> <Tab.Section> <Heading> Tab Three Content </Heading> </Tab.Section> </Tab.Group> </Tab.Container> </div> <div> <Text is=\"strong\">RIGHT</Text> <Tab.Container logic_name=\"tab-alignment-right\" logic_state=\"tab-alignment-right-1\" alignment_x=\"right\" > <Tab.Group logic_id=\"tab-alignment-right-1\" > <Tab.Label palette=\"accent\"> Tab One </Tab.Label> <Tab.Section> <Heading>Tab One Content</Heading> </Tab.Section> </Tab.Group> <Tab.Group logic_id=\"tab-alignment-right-2\" > <Tab.Label palette=\"accent\"> Tab Two </Tab.Label> <Tab.Section> <Heading>Tab Two Content</Heading> </Tab.Section> </Tab.Group> <Tab.Group logic_id=\"tab-alignment-right-3\" > <Tab.Label palette=\"accent\"> Tab Three </Tab.Label> <Tab.Section> <Heading> Tab Three Content </Heading> </Tab.Section> </Tab.Group> </Tab.Container> </div> <div> <Text is=\"strong\">STRETCH</Text> <Tab.Container logic_name=\"tab-alignment-stretch\" logic_state=\"tab-alignment-stretch-1\" alignment_x=\"stretch\" > <Tab.Group logic_id=\"tab-alignment-stretch-1\" > <Tab.Label palette=\"accent\"> Tab One </Tab.Label> <Tab.Section> <Heading>Tab One Content</Heading> </Tab.Section> </Tab.Group> <Tab.Group logic_id=\"tab-alignment-stretch-2\" > <Tab.Label palette=\"accent\"> Tab Two </Tab.Label> <Tab.Section> <Heading>Tab Two Content</Heading> </Tab.Section> </Tab.Group> <Tab.Group logic_id=\"tab-alignment-stretch-3\" > <Tab.Label palette=\"accent\"> Tab Three </Tab.Label> <Tab.Section> <Heading> Tab Three Content </Heading> </Tab.Section> </Tab.Group> </Tab.Container> </div> </Stack.Container> Loading USAGE : Use your Browser's devtools to observe this feature. You can customize the slot loading behavior of individual Tab.Section Components to not render their children, via the loading property. <script> import { Heading, Tab, Text, } from \"@kahi-ui/framework\"; </script> <Tab.Container logic_name=\"tab-loading\" logic_state=\"tab-lazy-1\" alignment_x=\"stretch\" > <Tab.Group logic_id=\"tab-lazy-1\"> <Tab.Label palette=\"accent\">Tab One</Tab.Label> <Tab.Section loading=\"lazy\"> <Heading>Tab One Content</Heading> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. </Text> </Tab.Section> </Tab.Group> <Tab.Group logic_id=\"tab-lazy-2\"> <Tab.Label palette=\"accent\">Tab Two</Tab.Label> <Tab.Section loading=\"lazy\"> <Heading>Tab Two Content</Heading> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. </Text> </Tab.Section> </Tab.Group> <Tab.Group logic_id=\"tab-lazy-3\"> <Tab.Label palette=\"accent\"> Tab Three </Tab.Label> <Tab.Section loading=\"lazy\"> <Heading>Tab Three Content</Heading> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. </Text> </Tab.Section> </Tab.Group> </Tab.Container> Anchor You can substitute Tab.Label for Tab.Anchor to support per-page tabbed views. <script> import { Heading, Tab, Text, } from \"@kahi-ui/framework\"; </script> <Tab.Container alignment_x=\"stretch\"> <Tab.Anchor current=\"page\" href=\"#\" palette=\"accent\" > Tab One </Tab.Anchor> <Tab.Section> <Heading>Tab One Content</Heading> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. </Text> </Tab.Section> <Tab.Anchor href=\"#\" palette=\"accent\"> Tab Two </Tab.Anchor> <Tab.Section>...</Tab.Section> <Tab.Anchor href=\"#\" palette=\"accent\"> Tab Three </Tab.Anchor> <Tab.Section>...</Tab.Section> </Tab.Container> Transitions You can use Transition Components to provide fancy switching animations. <script> import { Heading, Tab, Text, Transition, } from \"@kahi-ui/framework\"; </script> <Tab.Container logic_name=\"tab-transition\" logic_state=\"tab-transition-1\" alignment_x=\"stretch\" > <Tab.Group logic_id=\"tab-transition-1\"> <Tab.Label palette=\"accent\">Tab One</Tab.Label> <Tab.Section> <Transition animation=\"fade\" variation=\"enter\" > <Heading>Tab One Content</Heading> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. </Text> </Transition> </Tab.Section> </Tab.Group> <Tab.Group logic_id=\"tab-transition-2\"> <Tab.Label palette=\"accent\">Tab Two</Tab.Label> <Tab.Section> <Transition animation=\"fade\" variation=\"enter\" > <Heading>Tab Two Content</Heading> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. </Text> </Transition> </Tab.Section> </Tab.Group> <Tab.Group logic_id=\"tab-transition-3\"> <Tab.Label palette=\"accent\"> Tab Three </Tab.Label> <Tab.Section> <Transition animation=\"fade\" variation=\"enter\" > <Heading>Tab Three Content</Heading> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. </Text> </Transition> </Tab.Section> </Tab.Group> </Tab.Container> "},{"identifier":"/docs/display/badge","title":"Badge","text":"Badge NOTE : Introduced feature in v0.2.0. WARNING : This feature received a breaking change in v0.6.0 . Badge is typically used to subtlely display to the user some type of ancillary information, relating to its siblings / parent UI elements. <script> import {Badge} from \"@kahi-ui/framework\"; </script> <Badge>This is a Badge!</Badge> Imports <script> import {Badge} from \"@kahi-ui/framework\"; </script> Palette You can change the color palette of the Badge via the palette property. <script> import {Badge, Stack} from \"@kahi-ui/framework\"; </script> <Stack.Container spacing=\"medium\" orientation=\"horizontal\" variation=\"wrap\" > <Badge>This is a DEFAULT Badge</Badge> <Badge palette=\"accent\"> This is a ACCENT Badge </Badge> <Badge palette=\"neutral\"> This is a NEUTRAL Badge </Badge> <Badge palette=\"dark\">This is a DARK Badge</Badge> <Badge palette=\"light\"> This is a LIGHT Badge </Badge> <Badge palette=\"alert\"> This is a ALERT Badge </Badge> <Badge palette=\"affirmative\"> This is a AFFIRMATIVE Badge </Badge> <Badge palette=\"informative\"> This is a INFORMATIVE Badge </Badge> <Badge palette=\"negative\"> This is a NEGATIVE Badge </Badge> </Stack.Container> Radius NOTE : Introduced feature in v0.6.0. NOTE : By passing an array, you can set responsive values . e.g. radius={[\"tiny\", \"tablet:medium\", \"mobile:medium\"]} You can modify the border radius of the Badge via the radius property. <script> import {Badge, Stack} from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <Badge palette=\"inverse\">DEFAULT Badge</Badge> <Badge palette=\"inverse\" radius=\"nano\"> NANO Badge </Badge> <Badge palette=\"inverse\" radius=\"tiny\"> TINY Badge </Badge> <Badge palette=\"inverse\" radius=\"small\"> SMALL Badge </Badge> <Badge palette=\"inverse\" radius=\"medium\"> MEDIUM Badge </Badge> <Badge palette=\"inverse\" radius=\"large\"> LARGE Badge </Badge> <Badge palette=\"inverse\" radius=\"huge\"> HUGE Badge </Badge> <Badge palette=\"inverse\" radius=\"massive\"> MASSIVE Badge </Badge> </Stack.Container> Shape NOTE : Introduced feature in v0.6.0. NOTE : By passing an array, you can set responsive values . e.g. shape={[\"circle\", \"tablet:pill\", \"mobile:pill\"]} You can modify the shape of the Badge via the shape property. <script> import {Badge, Stack} from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <Badge palette=\"inverse\">DEFAULT Badge</Badge> <Badge palette=\"inverse\" shape=\"circle\"> CIRCLE Badge </Badge> <Badge palette=\"inverse\" shape=\"pill\"> PILL Badge </Badge> </Stack.Container> "},{"identifier":"/docs/display/datestamp","title":"DateStamp","text":"DateStamp NOTE : Introduced feature in v0.4.10. DateStamp formats an ISO 8601 / RFC 3339 timestamp into a human readable string, using the user preferences provided by the Browser. <script> import {DateStamp} from \"@kahi-ui/framework\"; const timestamp = \"2021-11-10\"; </script> <DateStamp {timestamp} /> Imports <script> import {DateStamp} from \"@kahi-ui/framework\"; </script> Custom Format NOTE : By using custom format settings, the user's defaults will not be loaded and you will have to opt into each unit of information. You can customize how each individual component of the timestamp is displayed via the day, month, weekday, and year properties respectively. <script> import {DateStamp} from \"@kahi-ui/framework\"; const timestamp = \"2021-11-10\"; </script> <DateStamp day=\"2-digit\" month=\"long\" weekday=\"long\" year=\"2-digit\" {timestamp} /> "},{"identifier":"/docs/display/datetimestamp","title":"DateTimeStamp","text":"DateTimeStamp NOTE : Introduced feature in v0.4.10. DateTimeStamp formats an ISO 8601 / RFC 3339 timestamp into a human readable string, using the user preferences provided by the Browser. <script> import {DateTimeStamp} from \"@kahi-ui/framework\"; const timestamp = \"2021-11-10T13:00:42-05:00\"; </script> <DateTimeStamp {timestamp} /> Imports <script> import {DateTimeStamp} from \"@kahi-ui/framework\"; </script> 12 Hour You can have the timestamp render as 12-hour time (1...12 AM/PM) instead of 24-hour time (0...23) via the hour_12 property. <script> import {DateTimeStamp} from \"@kahi-ui/framework\"; const timestamp = \"2021-11-10T13:00:42-05:00\"; </script> <DateTimeStamp hour=\"numeric\" hour_12 {timestamp} /> Custom Format NOTE : By using custom format settings, the user's defaults will not be loaded and you will have to opt into each unit of information. You can customize how each individual component of the timestamp is displayed via the day, month, weekday, year, hour , minute, and second properties respectively. <script> import {DateTimeStamp} from \"@kahi-ui/framework\"; const timestamp = \"2021-11-10T13:00:42-05:00\"; </script> <DateTimeStamp day=\"2-digit\" month=\"long\" weekday=\"long\" year=\"2-digit\" hour=\"2-digit\" minute=\"2-digit\" second=\"2-digit\" hour_12 {timestamp} /> "},{"identifier":"/docs/display/kbd","title":"Kbd","text":"Kbd NOTE : Introduced feature in v0.6.0. Kbd is typically used to communicate a keybinding to the user. <script> import {Kbd} from \"@kahi-ui/framework\"; </script> <Kbd>CTRL+C</Kbd> Imports <script> import {Kbd} from \"@kahi-ui/framework\"; </script> "},{"identifier":"/docs/display/list","title":"List","text":"List NOTE : Introduced feature in v0.2.4. List is used for rendering simple text lists. <script> import {List} from \"@kahi-ui/framework\"; </script> <List.Container> <List.Item>Lorem ipsum dolor sit amet.</List.Item> <List.Item>Consectetur adipiscing elit.</List.Item> <List.Item>Proin et consectetur orci.</List.Item> </List.Container> Imports <script> import {List} from \"@kahi-ui/framework\"; const {Container, Item} = List; </script> Elements You can change what type of list is being rendered via the is property. <script> import { List, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div> <Text> <Text is=\"strong\">ORDERED</Text> <List.Container is=\"ol\"> <List.Item> Lorem ipsum dolor sit amet. </List.Item> <List.Item> Consectetur adipiscing elit. </List.Item> <List.Item> Proin et consectetur orci. </List.Item> </List.Container> </Text> </div> <div> <Text> <Text is=\"strong\">UNORDERED</Text> <List.Container> <List.Item> Lorem ipsum dolor sit amet. </List.Item> <List.Item> Consectetur adipiscing elit. </List.Item> <List.Item> Proin et consectetur orci. </List.Item> </List.Container> </Text> </div> </Stack.Container> "},{"identifier":"/docs/display/table","title":"Table","text":"Table NOTE : Introduced feature in v0.2.7. Table is typically used to render tabular data in a structured row -> columns format, for end-users to easily read the contents. <script> import { Code, Table, Text, } from \"@kahi-ui/framework\"; </script> <Table.Container> <Table.Header> <Table.Row> <Table.Heading /> <Table.Heading>Minimum</Table.Heading> <Table.Heading>Maximum</Table.Heading> </Table.Row> </Table.Header> <Table.Section> <Table.Row> <Table.Column> <Text is=\"strong\">mobile</Text> </Table.Column> <Table.Column> <Code>0px</Code> </Table.Column> <Table.Column> <Code>640px</Code> </Table.Column> </Table.Row> <Table.Row> <Table.Column> <Text is=\"strong\">tablet</Text> </Table.Column> <Table.Column> <Code>641px</Code> </Table.Column> <Table.Column> <Code>768px</Code> </Table.Column> </Table.Row> <Table.Row> <Table.Column> <Text is=\"strong\">desktop</Text> </Table.Column> <Table.Column> <Code>769px</Code> </Table.Column> <Table.Column> <Code>1024px</Code> </Table.Column> </Table.Row> <Table.Row> <Table.Column> <Text is=\"strong\">widescreen</Text> </Table.Column> <Table.Column> <Code>1025px</Code> </Table.Column> <Table.Column> <Code>∞</Code> </Table.Column> </Table.Row> </Table.Section> <Table.Footer> <Table.Row> <Table.Heading /> <Table.Heading>Minimum</Table.Heading> <Table.Heading>Maximum</Table.Heading> </Table.Row> </Table.Footer> </Table.Container> Table Imports <script> import {Table} from \"@kahi-ui/framework\"; const { Container, Column, Footer, Header, Heading, Row, Section, } = Table; </script> Spans NOTE : Introduced feature in v0.4.4. WARNING : This feature was renamed from colspan / rowspan to span_x / span_y in v0.6.0 respectively. You can use the span_x / span_y properties on <Table.Column> / <Table.Heading> to adjust the size of table items they take up. <script> import {Table} from \"@kahi-ui/framework\"; </script> <Table.Container> <Table.Header> <Table.Row> <Table.Heading span_x={2}> span_x 2 x span_y 1 </Table.Heading> <Table.Heading> span_x 1 x span_y 1 </Table.Heading> </Table.Row> </Table.Header> <Table.Section> <Table.Row> <Table.Column> span_x 1 x span_y 1 </Table.Column> <Table.Column span_y={2}> span_x 1 x span_y 2 </Table.Column> </Table.Row> <Table.Row> <Table.Column> span_x 1 x span_y 1 </Table.Column> </Table.Row> </Table.Section> <Table.Footer> <Table.Row> <Table.Heading span_x={3}> span_x 3 x span_y 1 </Table.Heading> </Table.Row> </Table.Footer> </Table.Container> Borders You can make a Table have borders via the variation property. <script> import { Code, Table, Text, } from \"@kahi-ui/framework\"; </script> <Table.Container variation=\"borders\"> <Table.Header> <Table.Row> <Table.Heading /> <Table.Heading>Minimum</Table.Heading> <Table.Heading>Maximum</Table.Heading> </Table.Row> </Table.Header> <Table.Section> <Table.Row> <Table.Column> <Text is=\"strong\">mobile</Text> </Table.Column> <Table.Column> <Code>0px</Code> </Table.Column> <Table.Column> <Code>640px</Code> </Table.Column> </Table.Row> <Table.Row> <Table.Column> <Text is=\"strong\">tablet</Text> </Table.Column> <Table.Column> <Code>641px</Code> </Table.Column> <Table.Column> <Code>768px</Code> </Table.Column> </Table.Row> <Table.Row> <Table.Column> <Text is=\"strong\">desktop</Text> </Table.Column> <Table.Column> <Code>769px</Code> </Table.Column> <Table.Column> <Code>1024px</Code> </Table.Column> </Table.Row> <Table.Row> <Table.Column> <Text is=\"strong\">widescreen</Text> </Table.Column> <Table.Column> <Code>1025px</Code> </Table.Column> <Table.Column> <Code>∞</Code> </Table.Column> </Table.Row> </Table.Section> <Table.Footer> <Table.Row> <Table.Heading /> <Table.Heading>Minimum</Table.Heading> <Table.Heading>Maximum</Table.Heading> </Table.Row> </Table.Footer> </Table.Container> Stripes You can make a Table have stripes via the variation property. <script> import { Code, Table, Text, } from \"@kahi-ui/framework\"; </script> <Table.Container variation=\"stripes\"> <Table.Header> <Table.Row> <Table.Heading /> <Table.Heading>Minimum</Table.Heading> <Table.Heading>Maximum</Table.Heading> </Table.Row> </Table.Header> <Table.Section> <Table.Row> <Table.Column> <Text is=\"strong\">mobile</Text> </Table.Column> <Table.Column> <Code>0px</Code> </Table.Column> <Table.Column> <Code>640px</Code> </Table.Column> </Table.Row> <Table.Row> <Table.Column> <Text is=\"strong\">tablet</Text> </Table.Column> <Table.Column> <Code>641px</Code> </Table.Column> <Table.Column> <Code>768px</Code> </Table.Column> </Table.Row> <Table.Row> <Table.Column> <Text is=\"strong\">desktop</Text> </Table.Column> <Table.Column> <Code>769px</Code> </Table.Column> <Table.Column> <Code>1024px</Code> </Table.Column> </Table.Row> <Table.Row> <Table.Column> <Text is=\"strong\">widescreen</Text> </Table.Column> <Table.Column> <Code>1025px</Code> </Table.Column> <Table.Column> <Code>∞</Code> </Table.Column> </Table.Row> </Table.Section> <Table.Footer> <Table.Row> <Table.Heading /> <Table.Heading>Minimum</Table.Heading> <Table.Heading>Maximum</Table.Heading> </Table.Row> </Table.Footer> </Table.Container> Borders + Stripes You can make a Table have both borders AND stripes via the variation property. <script> import { Code, Table, Text, } from \"@kahi-ui/framework\"; </script> <Table.Container variation={[\"borders\", \"stripes\"]}> <Table.Header> <Table.Row> <Table.Heading /> <Table.Heading>Minimum</Table.Heading> <Table.Heading>Maximum</Table.Heading> </Table.Row> </Table.Header> <Table.Section> <Table.Row> <Table.Column> <Text is=\"strong\">mobile</Text> </Table.Column> <Table.Column> <Code>0px</Code> </Table.Column> <Table.Column> <Code>640px</Code> </Table.Column> </Table.Row> <Table.Row> <Table.Column> <Text is=\"strong\">tablet</Text> </Table.Column> <Table.Column> <Code>641px</Code> </Table.Column> <Table.Column> <Code>768px</Code> </Table.Column> </Table.Row> <Table.Row> <Table.Column> <Text is=\"strong\">desktop</Text> </Table.Column> <Table.Column> <Code>769px</Code> </Table.Column> <Table.Column> <Code>1024px</Code> </Table.Column> </Table.Row> <Table.Row> <Table.Column> <Text is=\"strong\">widescreen</Text> </Table.Column> <Table.Column> <Code>1025px</Code> </Table.Column> <Table.Column> <Code>∞</Code> </Table.Column> </Table.Row> </Table.Section> <Table.Footer> <Table.Row> <Table.Heading /> <Table.Heading>Minimum</Table.Heading> <Table.Heading>Maximum</Table.Heading> </Table.Row> </Table.Footer> </Table.Container> Sizing NOTE : Introduced feature in v0.3.5. You can change the sizes / spacings of the child elements via the sizing property. <script> import { Code, Stack, Table, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container spacing=\"medium\"> <div> <Text is=\"strong\">DEFAULT</Text> <Table.Container variation=\"borders\"> <Table.Header> <Table.Row> <Table.Heading /> <Table.Heading> Minimum </Table.Heading> <Table.Heading> Maximum </Table.Heading> </Table.Row> </Table.Header> <Table.Section> <Table.Row> <Table.Column> <Text is=\"strong\">mobile</Text> </Table.Column> <Table.Column> <Code>0px</Code> </Table.Column> <Table.Column> <Code>640px</Code> </Table.Column> </Table.Row> <Table.Row> <Table.Column> <Text is=\"strong\">tablet</Text> </Table.Column> <Table.Column> <Code>641px</Code> </Table.Column> <Table.Column> <Code>768px</Code> </Table.Column> </Table.Row> <Table.Row> <Table.Column> <Text is=\"strong\"> desktop </Text> </Table.Column> <Table.Column> <Code>769px</Code> </Table.Column> <Table.Column> <Code>1024px</Code> </Table.Column> </Table.Row> <Table.Row> <Table.Column> <Text is=\"strong\"> widescreen </Text> </Table.Column> <Table.Column> <Code>1025px</Code> </Table.Column> <Table.Column> <Code>∞</Code> </Table.Column> </Table.Row> </Table.Section> <Table.Footer> <Table.Row> <Table.Heading /> <Table.Heading> Minimum </Table.Heading> <Table.Heading> Maximum </Table.Heading> </Table.Row> </Table.Footer> </Table.Container> </div> <div> <Text is=\"strong\">NANO</Text> <Table.Container variation=\"borders\" sizing=\"nano\" > <Table.Header> <Table.Row> <Table.Heading /> <Table.Heading> Minimum </Table.Heading> <Table.Heading> Maximum </Table.Heading> </Table.Row> </Table.Header> <Table.Section> <Table.Row> <Table.Column> <Text is=\"strong\">mobile</Text> </Table.Column> <Table.Column> <Code>0px</Code> </Table.Column> <Table.Column> <Code>640px</Code> </Table.Column> </Table.Row> <Table.Row> <Table.Column> <Text is=\"strong\">tablet</Text> </Table.Column> <Table.Column> <Code>641px</Code> </Table.Column> <Table.Column> <Code>768px</Code> </Table.Column> </Table.Row> <Table.Row> <Table.Column> <Text is=\"strong\"> desktop </Text> </Table.Column> <Table.Column> <Code>769px</Code> </Table.Column> <Table.Column> <Code>1024px</Code> </Table.Column> </Table.Row> <Table.Row> <Table.Column> <Text is=\"strong\"> widescreen </Text> </Table.Column> <Table.Column> <Code>1025px</Code> </Table.Column> <Table.Column> <Code>∞</Code> </Table.Column> </Table.Row> </Table.Section> <Table.Footer> <Table.Row> <Table.Heading /> <Table.Heading> Minimum </Table.Heading> <Table.Heading> Maximum </Table.Heading> </Table.Row> </Table.Footer> </Table.Container> </div> <div> <Text is=\"strong\">TINY</Text> <Table.Container variation=\"borders\" sizing=\"tiny\" > <Table.Header> <Table.Row> <Table.Heading /> <Table.Heading> Minimum </Table.Heading> <Table.Heading> Maximum </Table.Heading> </Table.Row> </Table.Header> <Table.Section> <Table.Row> <Table.Column> <Text is=\"strong\">mobile</Text> </Table.Column> <Table.Column> <Code>0px</Code> </Table.Column> <Table.Column> <Code>640px</Code> </Table.Column> </Table.Row> <Table.Row> <Table.Column> <Text is=\"strong\">tablet</Text> </Table.Column> <Table.Column> <Code>641px</Code> </Table.Column> <Table.Column> <Code>768px</Code> </Table.Column> </Table.Row> <Table.Row> <Table.Column> <Text is=\"strong\"> desktop </Text> </Table.Column> <Table.Column> <Code>769px</Code> </Table.Column> <Table.Column> <Code>1024px</Code> </Table.Column> </Table.Row> <Table.Row> <Table.Column> <Text is=\"strong\"> widescreen </Text> </Table.Column> <Table.Column> <Code>1025px</Code> </Table.Column> <Table.Column> <Code>∞</Code> </Table.Column> </Table.Row> </Table.Section> <Table.Footer> <Table.Row> <Table.Heading /> <Table.Heading> Minimum </Table.Heading> <Table.Heading> Maximum </Table.Heading> </Table.Row> </Table.Footer> </Table.Container> </div> <div> <Text is=\"strong\">SMALL</Text> <Table.Container variation=\"borders\" sizing=\"small\" > <Table.Header> <Table.Row> <Table.Heading /> <Table.Heading> Minimum </Table.Heading> <Table.Heading> Maximum </Table.Heading> </Table.Row> </Table.Header> <Table.Section> <Table.Row> <Table.Column> <Text is=\"strong\">mobile</Text> </Table.Column> <Table.Column> <Code>0px</Code> </Table.Column> <Table.Column> <Code>640px</Code> </Table.Column> </Table.Row> <Table.Row> <Table.Column> <Text is=\"strong\">tablet</Text> </Table.Column> <Table.Column> <Code>641px</Code> </Table.Column> <Table.Column> <Code>768px</Code> </Table.Column> </Table.Row> <Table.Row> <Table.Column> <Text is=\"strong\"> desktop </Text> </Table.Column> <Table.Column> <Code>769px</Code> </Table.Column> <Table.Column> <Code>1024px</Code> </Table.Column> </Table.Row> <Table.Row> <Table.Column> <Text is=\"strong\"> widescreen </Text> </Table.Column> <Table.Column> <Code>1025px</Code> </Table.Column> <Table.Column> <Code>∞</Code> </Table.Column> </Table.Row> </Table.Section> <Table.Footer> <Table.Row> <Table.Heading /> <Table.Heading> Minimum </Table.Heading> <Table.Heading> Maximum </Table.Heading> </Table.Row> </Table.Footer> </Table.Container> </div> <div> <Text is=\"strong\">MEDIUM</Text> <Table.Container variation=\"borders\" sizing=\"medium\" > <Table.Header> <Table.Row> <Table.Heading /> <Table.Heading> Minimum </Table.Heading> <Table.Heading> Maximum </Table.Heading> </Table.Row> </Table.Header> <Table.Section> <Table.Row> <Table.Column> <Text is=\"strong\">mobile</Text> </Table.Column> <Table.Column> <Code>0px</Code> </Table.Column> <Table.Column> <Code>640px</Code> </Table.Column> </Table.Row> <Table.Row> <Table.Column> <Text is=\"strong\">tablet</Text> </Table.Column> <Table.Column> <Code>641px</Code> </Table.Column> <Table.Column> <Code>768px</Code> </Table.Column> </Table.Row> <Table.Row> <Table.Column> <Text is=\"strong\"> desktop </Text> </Table.Column> <Table.Column> <Code>769px</Code> </Table.Column> <Table.Column> <Code>1024px</Code> </Table.Column> </Table.Row> <Table.Row> <Table.Column> <Text is=\"strong\"> widescreen </Text> </Table.Column> <Table.Column> <Code>1025px</Code> </Table.Column> <Table.Column> <Code>∞</Code> </Table.Column> </Table.Row> </Table.Section> <Table.Footer> <Table.Row> <Table.Heading /> <Table.Heading> Minimum </Table.Heading> <Table.Heading> Maximum </Table.Heading> </Table.Row> </Table.Footer> </Table.Container> </div> <div> <Text is=\"strong\">LARGE</Text> <Table.Container variation=\"borders\" sizing=\"large\" > <Table.Header> <Table.Row> <Table.Heading /> <Table.Heading> Minimum </Table.Heading> <Table.Heading> Maximum </Table.Heading> </Table.Row> </Table.Header> <Table.Section> <Table.Row> <Table.Column> <Text is=\"strong\">mobile</Text> </Table.Column> <Table.Column> <Code>0px</Code> </Table.Column> <Table.Column> <Code>640px</Code> </Table.Column> </Table.Row> <Table.Row> <Table.Column> <Text is=\"strong\">tablet</Text> </Table.Column> <Table.Column> <Code>641px</Code> </Table.Column> <Table.Column> <Code>768px</Code> </Table.Column> </Table.Row> <Table.Row> <Table.Column> <Text is=\"strong\"> desktop </Text> </Table.Column> <Table.Column> <Code>769px</Code> </Table.Column> <Table.Column> <Code>1024px</Code> </Table.Column> </Table.Row> <Table.Row> <Table.Column> <Text is=\"strong\"> widescreen </Text> </Table.Column> <Table.Column> <Code>1025px</Code> </Table.Column> <Table.Column> <Code>∞</Code> </Table.Column> </Table.Row> </Table.Section> <Table.Footer> <Table.Row> <Table.Heading /> <Table.Heading> Minimum </Table.Heading> <Table.Heading> Maximum </Table.Heading> </Table.Row> </Table.Footer> </Table.Container> </div> <div> <Text is=\"strong\">HUGE</Text> <Table.Container variation=\"borders\" sizing=\"huge\" > <Table.Header> <Table.Row> <Table.Heading /> <Table.Heading> Minimum </Table.Heading> <Table.Heading> Maximum </Table.Heading> </Table.Row> </Table.Header> <Table.Section> <Table.Row> <Table.Column> <Text is=\"strong\">mobile</Text> </Table.Column> <Table.Column> <Code>0px</Code> </Table.Column> <Table.Column> <Code>640px</Code> </Table.Column> </Table.Row> <Table.Row> <Table.Column> <Text is=\"strong\">tablet</Text> </Table.Column> <Table.Column> <Code>641px</Code> </Table.Column> <Table.Column> <Code>768px</Code> </Table.Column> </Table.Row> <Table.Row> <Table.Column> <Text is=\"strong\"> desktop </Text> </Table.Column> <Table.Column> <Code>769px</Code> </Table.Column> <Table.Column> <Code>1024px</Code> </Table.Column> </Table.Row> <Table.Row> <Table.Column> <Text is=\"strong\"> widescreen </Text> </Table.Column> <Table.Column> <Code>1025px</Code> </Table.Column> <Table.Column> <Code>∞</Code> </Table.Column> </Table.Row> </Table.Section> <Table.Footer> <Table.Row> <Table.Heading /> <Table.Heading> Minimum </Table.Heading> <Table.Heading> Maximum </Table.Heading> </Table.Row> </Table.Footer> </Table.Container> </div> <div> <Text is=\"strong\">MASSIVE</Text> <Table.Container variation=\"borders\" sizing=\"massive\" > <Table.Header> <Table.Row> <Table.Heading /> <Table.Heading> Minimum </Table.Heading> <Table.Heading> Maximum </Table.Heading> </Table.Row> </Table.Header> <Table.Section> <Table.Row> <Table.Column> <Text is=\"strong\">mobile</Text> </Table.Column> <Table.Column> <Code>0px</Code> </Table.Column> <Table.Column> <Code>640px</Code> </Table.Column> </Table.Row> <Table.Row> <Table.Column> <Text is=\"strong\">tablet</Text> </Table.Column> <Table.Column> <Code>641px</Code> </Table.Column> <Table.Column> <Code>768px</Code> </Table.Column> </Table.Row> <Table.Row> <Table.Column> <Text is=\"strong\"> desktop </Text> </Table.Column> <Table.Column> <Code>769px</Code> </Table.Column> <Table.Column> <Code>1024px</Code> </Table.Column> </Table.Row> <Table.Row> <Table.Column> <Text is=\"strong\"> widescreen </Text> </Table.Column> <Table.Column> <Code>1025px</Code> </Table.Column> <Table.Column> <Code>∞</Code> </Table.Column> </Table.Row> </Table.Section> <Table.Footer> <Table.Row> <Table.Heading /> <Table.Heading> Minimum </Table.Heading> <Table.Heading> Maximum </Table.Heading> </Table.Row> </Table.Footer> </Table.Container> </div> </Stack.Container> Scrollable Tables You can make a Table scrollable by wrapping it with a Scrollable . <script> import { Code, Scrollable, Table, Text, } from \"@kahi-ui/framework\"; </script> <Scrollable width=\"medium\"> <Table.Container> <Table.Header> <Table.Row> <Table.Heading /> <Table.Heading>Minimum</Table.Heading> <Table.Heading>Maximum</Table.Heading> </Table.Row> </Table.Header> <Table.Section> <Table.Row> <Table.Column> <Text is=\"strong\">mobile</Text> </Table.Column> <Table.Column> <Code>0px</Code> </Table.Column> <Table.Column> <Code>640px</Code> </Table.Column> </Table.Row> <Table.Row> <Table.Column> <Text is=\"strong\">tablet</Text> </Table.Column> <Table.Column> <Code>641px</Code> </Table.Column> <Table.Column> <Code>768px</Code> </Table.Column> </Table.Row> <Table.Row> <Table.Column> <Text is=\"strong\">desktop</Text> </Table.Column> <Table.Column> <Code>769px</Code> </Table.Column> <Table.Column> <Code>1024px</Code> </Table.Column> </Table.Row> <Table.Row> <Table.Column> <Text is=\"strong\">widescreen</Text> </Table.Column> <Table.Column> <Code>1025px</Code> </Table.Column> <Table.Column> <Code>∞</Code> </Table.Column> </Table.Row> </Table.Section> <Table.Footer> <Table.Row> <Table.Heading /> <Table.Heading>Minimum</Table.Heading> <Table.Heading>Maximum</Table.Heading> </Table.Row> </Table.Footer> </Table.Container> </Scrollable> "},{"identifier":"/docs/display/timestamp","title":"TimeStamp","text":"TimeStamp NOTE : Introduced feature in v0.4.10. TimeStamp formats an ISO 8601 / RFC 3339 timestamp into a human readable string, using the user preferences provided by the Browser. <script> import {TimeStamp} from \"@kahi-ui/framework\"; const timestamp = \"13:00:42\"; </script> <TimeStamp {timestamp} /> Imports <script> import {TimeStamp} from \"@kahi-ui/framework\"; </script> 12 Hour You can have the timestamp render as 12-hour time (1...12 AM/PM) instead of 24-hour time (0...23) via the hour_12 property. <script> import {TimeStamp} from \"@kahi-ui/framework\"; const timestamp = \"13:00:42\"; </script> <TimeStamp hour_12 {timestamp} /> Custom Format NOTE : By using custom format settings, the user's defaults will not be loaded and you will have to opt into each unit of information. You can customize how each individual component of the timestamp is displayed via the hour, minute, and second properties respectively. <script> import {TimeStamp} from \"@kahi-ui/framework\"; const timestamp = \"13:00:42\"; </script> <TimeStamp hour=\"2-digit\" hour_12 {timestamp} /> "},{"identifier":"/docs/embedded/figure","title":"Figure","text":"Figure NOTE : Introduced feature in v0.2.1. WARNING : This feature received a breaking change in v0.6.0 . Figure is a multimedia container Component, providing modifications for things such as images and videos. <script> import {Figure} from \"@kahi-ui/framework\"; </script> <Figure max_width=\"33\"> <img src={IMAGE_BACKGROUND} /> </Figure> Imports <script> import {Figure} from \"@kahi-ui/framework\"; </script> Fit NOTE : By passing an array, you can set responsive values . e.g. fit={[\"contain\", \"tablet:cover\", \"mobile:cover\"]} You can change how the child content is stretched across the Figure container via the fit property. <script> import { Figure, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div> <Text is=\"strong\">DEFAULT</Text> <Figure size=\"small\"> <img src={IMAGE_BACKGROUND} data-width=\"tiny\" data-height=\"medium\" /> </Figure> </div> <div> <Text is=\"strong\">CONTAIN</Text> <Figure fit=\"contain\"> <img src={IMAGE_BACKGROUND} data-width=\"tiny\" data-height=\"medium\" /> </Figure> </div> <div> <Text is=\"strong\">COVER</Text> <Figure fit=\"cover\"> <img src={IMAGE_BACKGROUND} data-width=\"tiny\" data-height=\"medium\" /> </Figure> </div> <div> <Text is=\"strong\">FILL</Text> <Figure fit=\"fill\"> <img src={IMAGE_BACKGROUND} data-width=\"tiny\" data-height=\"medium\" /> </Figure> </div> <div> <Text is=\"strong\">NONE</Text> <Figure fit=\"none\"> <img src={IMAGE_BACKGROUND} data-width=\"tiny\" data-height=\"medium\" /> </Figure> </div> <div> <Text is=\"strong\">SCALE-DOWN</Text> <Figure fit=\"scale-down\"> <img src={IMAGE_BACKGROUND} data-width=\"tiny\" data-height=\"medium\" /> </Figure> </div> </Stack.Container> Radius NOTE : Introduced feature in v0.6.0. NOTE : By passing an array, you can set responsive values . e.g. radius={[\"tiny\", \"tablet:medium\", \"mobile:medium\"]} You can modify the border radius of the child content via the radius property. <script> import { Figure, Mosaic, Text, } from \"@kahi-ui/framework\"; </script> <Mosaic.Container spacing=\"medium\" sizing=\"tiny\"> <div> <Text is=\"strong\">DEFAULT</Text> <Figure> <img src={IMAGE_BACKGROUND} /> </Figure> </div> <div> <Text is=\"strong\">NONE</Text> <Figure radius=\"none\"> <img src={IMAGE_BACKGROUND} /> </Figure> </div> <div> <Text is=\"strong\">NANO</Text> <Figure radius=\"nano\"> <img src={IMAGE_BACKGROUND} /> </Figure> </div> <div> <Text is=\"strong\">TINY</Text> <Figure radius=\"tiny\"> <img src={IMAGE_BACKGROUND} /> </Figure> </div> <div> <Text is=\"strong\">SMALL</Text> <Figure radius=\"small\"> <img src={IMAGE_BACKGROUND} /> </Figure> </div> <div> <Text is=\"strong\">MEDIUM</Text> <Figure radius=\"medium\"> <img src={IMAGE_BACKGROUND} /> </Figure> </div> <div> <Text is=\"strong\">LARGE</Text> <Figure radius=\"large\"> <img src={IMAGE_BACKGROUND} /> </Figure> </div> <div> <Text is=\"strong\">HUGE</Text> <Figure radius=\"huge\"> <img src={IMAGE_BACKGROUND} /> </Figure> </div> <div> <Text is=\"strong\">MASSIVE</Text> <Figure radius=\"massive\"> <img src={IMAGE_BACKGROUND} /> </Figure> </div> </Mosaic.Container> Shape NOTE : Introduced feature in v0.6.0. NOTE : By passing an array, you can set responsive values . e.g. shape={[\"circle\", \"tablet:pill\", \"mobile:pill\"]} You can modify the shape of the child content via the shape property. <script> import { Figure, Mosaic, Text, } from \"@kahi-ui/framework\"; </script> <Mosaic.Container spacing=\"medium\" sizing=\"tiny\"> <div> <Text is=\"strong\">DEFAULT</Text> <Figure> <img src={IMAGE_BACKGROUND} /> </Figure> </div> <div> <Text is=\"strong\">CIRCLE</Text> <Figure shape=\"circle\"> <img src={IMAGE_BACKGROUND} /> </Figure> </div> <div> <Text is=\"strong\">PILL</Text> <Figure shape=\"pill\"> <img src={IMAGE_BACKGROUND} /> </Figure> </div> </Mosaic.Container> "},{"identifier":"/docs/feedback/dot","title":"Dot","text":"Dot NOTE : Introduced feature in v0.2.0. WARNING : This feature received a breaking change in v0.6.0 . Dot is typically used for calling out other UI elements to the end-user, that they need attention. <script> import {Dot} from \"@kahi-ui/framework\"; </script> <Dot /> Imports <script> import {Dot} from \"@kahi-ui/framework\"; </script> Palette You can change the color palette of the Dot via the palette property. <script> import { Dot, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div> <Text is=\"strong\">DEFAULT</Text> <br /> <Dot /> </div> <div> <Text is=\"strong\">ACCENT</Text> <br /> <Dot palette=\"accent\" /> </div> <div> <Text is=\"strong\">NEUTRAL</Text> <br /> <Dot palette=\"neutral\" /> </div> <div> <Text is=\"strong\">DARK</Text> <br /> <Dot palette=\"dark\" /> </div> <div> <Text is=\"strong\">LIGHT</Text> <br /> <Dot palette=\"light\" /> </div> <div> <Text is=\"strong\">ALERT</Text> <br /> <Dot palette=\"alert\" /> </div> <div> <Text is=\"strong\">AFFIRMATIVE</Text> <br /> <Dot palette=\"affirmative\" /> </div> <div> <Text is=\"strong\">INFORMATIVE</Text> <br /> <Dot palette=\"informative\" /> </div> <div> <Text is=\"strong\">NEGATIVE</Text> <br /> <Dot palette=\"negative\" /> </div> </Stack.Container> "},{"identifier":"/docs/feedback/ellipsis","title":"Ellipsis","text":"Ellipsis NOTE : Introduced feature in v0.2.5. Ellipsis is an indicator used to tell the user that something is loading in the background. <script> import { Button, Ellipsis, Heading, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container alignment_x=\"left\" spacing=\"medium\"> <Button disabled> <!-- NOTE: Wrapping text and Component together to prevent `Ellipsis` from getting icon spacing --> <Text is=\"span\"> Submit<Ellipsis /> </Text> </Button> <Heading> Loading<Ellipsis /> </Heading> </Stack.Container> Imports <script> import {Ellipsis} from \"@kahi-ui/framework\"; </script> Slot You can customize the content used for the animation via the by passing into the default slot. <script> import { Ellipsis, Heading, } from \"@kahi-ui/framework\"; </script> <Heading> Loading<Ellipsis>/</Ellipsis> </Heading> Animations NOTE : Introduced feature in v0.6.0. You can customize which animation is played via the animation property. <script> import { Dot, Ellipsis, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div> <Text is=\"strong\">DEFAULT</Text> <br /> <Ellipsis> <Dot palette=\"accent\" /> </Ellipsis> </div> <div> <Text is=\"strong\">BOUNCE</Text> <br /> <Ellipsis animation=\"bounce\"> <Dot palette=\"accent\" /> </Ellipsis> </div> <div> <Text is=\"strong\">PING</Text> <br /> <Ellipsis animation=\"ping\"> <Dot palette=\"accent\" /> </Ellipsis> </div> <div> <Text is=\"strong\">PULSE</Text> <br /> <Ellipsis animation=\"pulse\"> <Dot palette=\"accent\" /> </Ellipsis> </div> </Stack.Container> Iterations NOTE : Introduced feature in v0.6.0. You can customize how many times the content is repeated via the iterations property. <script> import { Dot, Ellipsis, NumberInput, } from \"@kahi-ui/framework\"; let iterations = 5; </script> <NumberInput bind:value={iterations} /> <!-- NOTE: The animation can desync if `iterations` is changed during runtime. So for the demo, a `#key` block is used to recreate the Component every time `iterations` is updated --> {#key iterations} <Ellipsis animation=\"bounce\" {iterations}> <Dot palette=\"accent\" /> </Ellipsis> {/key} "},{"identifier":"/docs/feedback/progress","title":"Progress","text":"Progress NOTE : Introduced feature in v0.3.1. Progress is typically used to render feedback to the end-user about how complete a current task is. <script> import { Button, Progress, } from \"@kahi-ui/framework\"; let value = 0.5; </script> <Progress shape=\"circle\" {value} /> <Progress {value} /> <Button palette=\"negative\" on:click={() => (value = Math.max(0, value - 0.05))} > -0.05 </Button> <Button palette=\"affirmative\" on:click={() => (value = Math.min(1, value + 0.05))} > +0.05 </Button> Imports <script> import {Progress} from \"@kahi-ui/framework\"; </script> Radius NOTE : Introduced feature in v0.6.0. NOTE : By passing an array, you can set responsive values . e.g. radius={[\"tiny\", \"tablet:medium\", \"mobile:medium\"]} You can modify the border radius of a bar Progress via the radius property. <script> import { Mosaic, Progress, Text, } from \"@kahi-ui/framework\"; </script> <Mosaic.Container sizing=\"small\" spacing=\"medium\"> <div> <Text is=\"strong\">DEFAULT</Text> <Progress value={0.5} /> </div> <div> <Text is=\"strong\">NONE</Text> <Progress value={0.5} radius=\"none\" /> </div> <div> <Text is=\"strong\">NANO</Text> <Progress value={0.5} radius=\"nano\" /> </div> <div> <Text is=\"strong\">TINY</Text> <Progress value={0.5} radius=\"tiny\" /> </div> <div> <Text is=\"strong\">SMALL</Text> <Progress value={0.5} radius=\"small\" /> </div> <div> <Text is=\"strong\">MEDIUM</Text> <Progress value={0.5} radius=\"medium\" /> </div> <div> <Text is=\"strong\">LARGE</Text> <Progress value={0.5} radius=\"large\" /> </div> <div> <Text is=\"strong\">HUGE</Text> <Progress value={0.5} radius=\"huge\" /> </div> <div> <Text is=\"strong\">MASSIVE</Text> <Progress value={0.5} radius=\"massive\" /> </div> </Mosaic.Container> Shape You can modify the shape of the Progress via the shape property. <script> import {Progress} from \"@kahi-ui/framework\"; </script> <Progress shape=\"circle\" value={0.5} /> <Progress value={0.5} /> Palette You can change the color palette of the Progress via the palette property. <script> import { Mosaic, Progress, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container spacing=\"medium\" variation=\"wrap\"> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div> <Text is=\"strong\">DEFAULT</Text> <br /> <Progress shape=\"circle\" value={0.5} /> </div> <div> <Text is=\"strong\">ACCENT</Text> <br /> <Progress shape=\"circle\" value={0.5} palette=\"accent\" /> </div> <div> <Text is=\"strong\">NEUTRAL</Text> <br /> <Progress shape=\"circle\" value={0.5} palette=\"neutral\" /> </div> <div> <Text is=\"strong\">DARK</Text> <br /> <Progress shape=\"circle\" value={0.5} palette=\"dark\" /> </div> <div> <Text is=\"strong\">LIGHT</Text> <br /> <Progress shape=\"circle\" value={0.5} palette=\"light\" /> </div> <div> <Text is=\"strong\">ALERT</Text> <br /> <Progress shape=\"circle\" value={0.5} palette=\"alert\" /> </div> <div> <Text is=\"strong\">AFFIRMATIVE</Text> <br /> <Progress shape=\"circle\" value={0.5} palette=\"affirmative\" /> </div> <div> <Text is=\"strong\">INFORMATIVE</Text> <br /> <Progress shape=\"circle\" value={0.5} palette=\"informative\" /> </div> <div> <Text is=\"strong\">NEGATIVE</Text> <br /> <Progress shape=\"circle\" value={0.5} palette=\"negative\" /> </div> </Stack.Container> <Mosaic.Container sizing=\"small\" spacing=\"medium\"> <div> <Text is=\"strong\">DEFAULT</Text> <Progress value={0.5} /> </div> <div> <Text is=\"strong\">ACCENT</Text> <Progress value={0.5} palette=\"accent\" /> </div> <div> <Text is=\"strong\">NEUTRAL</Text> <Progress value={0.5} palette=\"neutral\" /> </div> <div> <Text is=\"strong\">DARK</Text> <Progress value={0.5} palette=\"dark\" /> </div> <div> <Text is=\"strong\">LIGHT</Text> <Progress value={0.5} palette=\"light\" /> </div> <div> <Text is=\"strong\">ALERT</Text> <Progress value={0.5} palette=\"alert\" /> </div> <div> <Text is=\"strong\">AFFIRMATIVE</Text> <Progress value={0.5} palette=\"affirmative\" /> </div> <div> <Text is=\"strong\">INFORMATIVE</Text> <Progress value={0.5} palette=\"informative\" /> </div> <div> <Text is=\"strong\">NEGATIVE</Text> <Progress value={0.5} palette=\"negative\" /> </div> </Mosaic.Container> </Stack.Container> Sizing WARNING : This feature was renamed from size to sizing in v0.6.0 . You can change the size of the Progress via the sizing property. <script> import { Mosaic, Progress, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container spacing=\"medium\" variation=\"wrap\"> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div> <Text is=\"strong\">DEFAULT</Text> <br /> <Progress shape=\"circle\" value={0.5} /> </div> <div> <Text is=\"strong\">TINY</Text> <br /> <Progress shape=\"circle\" value={0.5} sizing=\"tiny\" /> </div> <div> <Text is=\"strong\">SMALL</Text> <br /> <Progress shape=\"circle\" value={0.5} sizing=\"small\" /> </div> <div> <Text is=\"strong\">MEDIUM</Text> <br /> <Progress shape=\"circle\" value={0.5} sizing=\"medium\" /> </div> <div> <Text is=\"strong\">LARGE</Text> <br /> <Progress shape=\"circle\" value={0.5} sizing=\"large\" /> </div> <div> <Text is=\"strong\">HUGE</Text> <br /> <Progress shape=\"circle\" value={0.5} sizing=\"huge\" /> </div> </Stack.Container> <Mosaic.Container sizing=\"small\" spacing=\"medium\"> <div> <Text is=\"strong\">DEFAULT</Text> <Progress value={0.5} /> </div> <div> <Text is=\"strong\">TINY</Text> <Progress value={0.5} sizing=\"tiny\" /> </div> <div> <Text is=\"strong\">SMALL</Text> <Progress value={0.5} sizing=\"small\" /> </div> <div> <Text is=\"strong\">MEDIUM</Text> <Progress value={0.5} sizing=\"medium\" /> </div> <div> <Text is=\"strong\">LARGE</Text> <Progress value={0.5} sizing=\"large\" /> </div> <div> <Text is=\"strong\">HUGE</Text> <Progress value={0.5} sizing=\"huge\" /> </div> </Mosaic.Container> </Stack.Container> Indeterminate By not passing the value property, the Progress will render with an animation for tasks that don't have trackable progression. <script> import { Mosaic, Progress, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container spacing=\"medium\" variation=\"wrap\"> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div> <Text is=\"strong\">DEFAULT</Text> <br /> <Progress shape=\"circle\" /> </div> <div> <Text is=\"strong\">ACCENT</Text> <br /> <Progress shape=\"circle\" palette=\"accent\" /> </div> <div> <Text is=\"strong\">NEUTRAL</Text> <br /> <Progress shape=\"circle\" palette=\"neutral\" /> </div> <div> <Text is=\"strong\">DARK</Text> <br /> <Progress shape=\"circle\" palette=\"dark\" /> </div> <div> <Text is=\"strong\">LIGHT</Text> <br /> <Progress shape=\"circle\" palette=\"light\" /> </div> <div> <Text is=\"strong\">ALERT</Text> <br /> <Progress shape=\"circle\" palette=\"alert\" /> </div> <div> <Text is=\"strong\">AFFIRMATIVE</Text> <br /> <Progress shape=\"circle\" palette=\"affirmative\" /> </div> <div> <Text is=\"strong\">INFORMATIVE</Text> <br /> <Progress shape=\"circle\" palette=\"informative\" /> </div> <div> <Text is=\"strong\">NEGATIVE</Text> <br /> <Progress shape=\"circle\" palette=\"negative\" /> </div> </Stack.Container> <Mosaic.Container sizing=\"small\" spacing=\"medium\"> <div> <Text is=\"strong\">DEFAULT</Text> <Progress /> </div> <div> <Text is=\"strong\">ACCENT</Text> <Progress palette=\"accent\" /> </div> <div> <Text is=\"strong\">NEUTRAL</Text> <Progress palette=\"neutral\" /> </div> <div> <Text is=\"strong\">DARK</Text> <Progress palette=\"dark\" /> </div> <div> <Text is=\"strong\">LIGHT</Text> <Progress palette=\"light\" /> </div> <div> <Text is=\"strong\">ALERT</Text> <Progress palette=\"alert\" /> </div> <div> <Text is=\"strong\">AFFIRMATIVE</Text> <Progress palette=\"affirmative\" /> </div> <div> <Text is=\"strong\">INFORMATIVE</Text> <Progress palette=\"informative\" /> </div> <div> <Text is=\"strong\">NEGATIVE</Text> <Progress palette=\"negative\" /> </div> </Mosaic.Container> </Stack.Container> "},{"identifier":"/docs/framework/browser-support","title":"Browser Support","text":"Browser Support Modern Browsers listed below and generally their derivatives. Primary testing happens on Chrome / Firefox, both mobile and desktop. With occasional testing on Gnome Web which is based on WebKit. Chrome Edge Firefox Safari Edge (Pre Chromium) Internet Explorer Estimated Minimum 88+ January 2021 88+ January 2021 84+ December 2020 14.1+ April 2021 NOT SUPPORTED NOT SUPPORTED Tested Minimum 89+ ? 87+ ? NOT SUPPORTED NOT SUPPORTED Features Used The features listed below are used within Kahi UI, and are newer features. So they raise the minimum Browser versions needed. CSS clip-path w/ Shapes CSS Custom Properties Flexbox w/ Gap Grid inset :is :not w/ Selector List prefers-color-scheme Javascript TODO : Run through the codebase and look for newer JS features used "},{"identifier":"/docs/framework/custom-builds","title":"Custom Builds","text":"Custom Builds WARNING : When using manual builds of Kahi UI, you'll need to rebuild the distributables every time you upgrade Kahi UI. If you're building a Web Application that's particularly sensitive to latency, page sizes, etc. It's recommended to create custom builds of the Framework's CSS distributables. Downloading First, you'll need to head over to Releases , download the source code .zip / .tar.gz archive that matches the version of Kahi UI you're developing against, and decompress the archive onto your filesystem. Installation Once you've got everything downloaded and decompressed, open a terminal in the source code directory and install Kahi UI's dependencies. npm ci Building Now you can start building the CSS distributables via a NPM script. npm run build:framework Which should output in the package/ directory like so. package/ │ └───kahi-ui.framework.css // Main CSS rules and stylings └───kahi-ui.framework.css.map // Source map for the above file └───kahi-ui.theme.default.css // Themeing variables that define the look and feel └───kahi-ui.theme.default.css.map // Source map for the above file Then just copy the files you require into your Web Application's codebase and import them. Minifying You can also build the minified versions of the CSS distributables with another NPM script. npm run build:minify Which would output to package/ without source maps like so. package/ │ └───kahi-ui.framework.min.css // Main CSS rules and stylings └───kahi-ui.theme.default.min.css // Themeing variables that define the look and feel Filters Each individual feature of Kahi UI that requires CSS can turned off, removing it from builds. And it's as simple as adding command line parameters. Just run either of the NPM scripts with filter parameters following this format: --disable-{SCOPE}-{FEATURE}. For instance, if wanting to disable Grid and the responsitivity of Spacings (e.g. margin={[\"mobile:medium\"]}), try the following. USAGE : The double dashes (--) after build:framework / build:minify is required so NPM passes our command line parameters to the script. npm run build:framework -- --disable-globals-intrinsics-responsitivity --disable-components-grid Components Disclosure --disable-components-disclosure-accordion — Accordion --disable-components-disclosure-carousel — Carousel --disable-components-disclosure-tab — Tab Display --disable-components-display-badge — Badge --disable-components-display-kbd — Kbd --disable-components-display-list — List --disable-components-display-table — Table Embedded --disable-components-embedded-figure — Figure Feedback --disable-components-feedback-dot — Dot --disable-components-feedback-ellipsis — Ellipsis --disable-components-feedback-progress — Progress Interactables --disable-components-interactables-button — Button --disable-components-interactables-check — Check --disable-components-interactables-file-drop-input — FileDropInput --disable-components-interactables-form — Form --disable-components-interactables-number-input — NumberInput --disable-components-interactables-radio — Radio --disable-components-interactables-switch — Switch --disable-components-interactables-text-input — TextInput Layouts --disable-components-layouts-center — Center --disable-components-layouts-container — Container --disable-components-layouts-divider — Divider --disable-components-layouts-grid — Grid --disable-components-layouts-group — Group --disable-components-layouts-mosaic — Mosaic --disable-components-layouts-position — Position --disable-components-layouts-scrollable — Scrollable --disable-components-layouts-spacer — Spacer --disable-components-layouts-stack — Stack Navigation --disable-components-navigation-anchor — Anchor --disable-components-navigation-aside — Aside --disable-components-navigation-breadcrumb — Breadcrumb --disable-components-navigation-menu — Menu --disable-components-navigation-omni — Omni Overlays --disable-components-overlays-backdrop — Backdrop --disable-components-overlays-clickable — Clickable --disable-components-overlays-overlay — Overlay --disable-components-overlays-popover — Popover Surfaces --disable-components-surfaces-box — Box --disable-components-surfaces-card — Card --disable-components-surfaces-hero — Hero --disable-components-surfaces-tile — Tile Typography --disable-components-typography-blockquote — Blockquote --disable-components-typography-code — Code --disable-components-typography-heading — Heading --disable-components-typography-text — Text Utilities --disable-components-utilities-animation — Animation --disable-components-utilities-portal — Portal --disable-components-utilities-transition — Transition Widgets --disable-components-widgets-dataselect — DataSelect Globals WARNING : Most non-Component specific properties are implemented as global CSS attributes to reduce redundancy. If you turn off the feature, it turns off for ALL Components. --disable-globals-alignments — <* alignment=\"{ALIGNMENT}\" alignment_x=\"{ALIGNMENT}\" alignment_y=\"{ALIGNMENT}\"> --disable-globals-alignments-responsitivity — <* alignment={[\"{VIEWPORT}:{ALIGNMENT}]} alignment_x={[\"{VIEWPORT}:{ALIGNMENT}]} alignment_y={[\"{VIEWPORT}:{ALIGNMENT}]}> --disable-globals-elevations — <* elevation=\"{ELEVATION}\"> --disable-globals-elevations-responsitivity — <* elevation={[\"{VIEWPORT}:{ELEVATION}\"]}> --disable-globals-fit — <* fit=\"{FIT}\"> --disable-globals-fit-responsitivity — <* fit={[\"{VIEWPORT}:{FIT}\"]}> --disable-globals-grid — <* points=\"{POINTS}\" span=\"{SPAN}\" span_x=\"{SPAN}\" span_y=\"{SPAN}\"> --disable-globals-grid-responsitivity — <* points={[\"{VIEWPORT}:{POINTS}\"]} span={[\"{VIEWPORT}:{SPAN}\"]} span_x={[\"{VIEWPORT}:{SPAN}\"]} span_y={[\"{VIEWPORT}:{SPAN}\"]}> --disable-globals-intrinsics — <* height max_height min_height margin padding size max_size min_size width max_width min_width> --disable-globals-intrinsics-responsitivity — <* height max_height min_height margin padding size max_size min_size width max_width min_width> --disable-globals-orientations — <* orientation=\"{ORIENTATION}\"> --disable-globals-orientations-responsitivity — <* orientation={[\"{VIEWPORT}:{ORIENTATION}\"]}> --disable-globals-palettes — <* palette=\"{PALETTE}\"> --disable-globals-radius — <* radius=\"{RADIUS}\"> --disable-globals-radius-responsitivity — <* radius={[\"{VIEWPORT}:{RADIUS}\"]}> --disable-globals-sizings — <* sizing=\"{SIZING}\"> --disable-globals-sizings-responsitivity — <* sizing={[\"{VIEWPORT}:{SIZING}\"]}> --disable-globals-spacings — <* spacing=\"{SPACING}\" spacing_x=\"{SPACING}\" spacing_y=\"{SPACING}\"> --disable-globals-spacings-responsitivity— <* spacing={[\"{VIEWPORT}:{SPACING}\"]} spacing_x={[\"{VIEWPORT}:{SPACING}\"]} spacing_y={[\"{VIEWPORT}:{SPACING}\"]}> "},{"identifier":"/docs/framework/responsitivity","title":"Responsitivity","text":"Responsitivity Kahi UI supports responsive design out of the box for the majority of its Components. Such as Grid , where you can define how many items are displayed at each Viewport. Viewports As mentioned above, Kahi UI has the concept of four pre-defined breakpoints that are known as Viewports. Which are only active whenever the Browser window's width is within two sizes. Viewport Minimum Maximum mobile 0px 640px tablet 641px 768px desktop 769px 1024px widescreen 1025px ∞ Syntax To be able to use Viewport-specific values, you just need to prefix your values with {VIEWPORT}:, e.g. <Grid points=\"mobile:3\">. But then you can't specify default values or other Viewport-specifics. For that you need to pass an array in like below. USAGE : REPL does not support viewport values, resize your Browser to observe this feature. <script> import {Box, Grid} from \"@kahi-ui/framework\"; </script> <Grid.Container class=\"responsitivity-syntax\" points={[\"5\", \"mobile:2\", \"tablet:3\", \"desktop:4\"]} spacing=\"medium\" > <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> </Grid.Container> <style> :global(.responsitivity-syntax .box) { height: 3rem; } </style> "},{"identifier":"/docs/globals/actions","title":"Actions","text":"Actions NOTE : Introduced feature in v0.4.11. As a limitation of Svelte, you cannot use Actions on Components. So the Framework provides a special syntax to support forwarding actions to a Component's main elements. <!-- prettier-ignore --> <script> import { Box, click_outside, } from \"@kahi-ui/framework\"; let clicked = false; </script> <Box palette={clicked ? \"affirmative\" : \"negative\"} padding=\"small\" actions={[ [ click_outside, {on_click_outside: () => (clicked = false)}, ], ]} on:click={() => (clicked = true)} > {clicked ? \"I was clicked inside!\" : \"I am currently not clicked...\"} </Box> "},{"identifier":"/docs/globals/contents","title":"Contents","text":"Contents NOTE : Introduced feature in v0.5.0. All Components have access to the data-contents global HTML attribute via the contents property which removes the Component's bounding box / stylings from the DOM tree. USAGE : REPL does not support viewport values, resize your Browser to observe this feature. NOTE : By passing an array, you can set responsive values . e.g. contents={[\"mobile\", \"tablet\"]} <script> import {Box} from \"@kahi-ui/framework\"; </script> <Box palette=\"accent\" contents={[\"mobile\", \"tablet\"]}> I have no styling on Mobile / Tablet Viewports. </Box> <Box palette=\"affirmative\" contents={[\"desktop\", \"widescreen\"]} > I have no styling on Desktop / Widescreen Viewports. </Box> "},{"identifier":"/docs/globals/elements","title":"Elements","text":"Elements Like binding DOM nodes , most Components support binding their top-level layout HTMLElement via the element property instead of this. <script> import {Button} from \"@kahi-ui/framework\"; let element = null; $: console.log({element}); </script> <Button bind:element>I reference a button!</Button> "},{"identifier":"/docs/globals/events","title":"Events","text":"Events Like binding normal DOM events with Svelte. Various Components in the Framework support forwarding their element's native events , or supply their own events for their own specific logic. <script> import {Check} from \"@kahi-ui/framework\"; function on_change(event) { console.log(\"I was changed to:\", state); } let state = false; </script> <Check bind:state on:change={on_change} /> "},{"identifier":"/docs/globals/hidden","title":"Hidden","text":"Hidden NOTE : Introduced feature in v0.2.2. All Components have access to the data-hidden global HTML attribute via the hidden property. Unlike the standard hidden HTML attribute, data-hidden supports Responsitivity . USAGE : REPL does not support viewport values, resize your Browser to observe this feature. NOTE : By passing an array, you can set responsive values . e.g. hidden={[\"mobile\", \"tablet\"]} <script> import {Box} from \"@kahi-ui/framework\"; </script> <Box palette=\"accent\" hidden={[\"mobile\", \"tablet\"]}> I am visible on Desktop / Widescreen Viewports. </Box> <Box palette=\"affirmative\" hidden={[\"desktop\", \"widescreen\"]} > I am visible on Mobile / Tablet Viewports. </Box> "},{"identifier":"/docs/globals/html5","title":"HTML5","text":"HTML5 All Components have access to common HTML5 global attributes and events. class NOTE : Introduced feature in v0.2.0. class allows you to apply CSS classes that you've defined to Components. However, you will have to use :global on your class names to bypass Svelte's local scoping. <script> import {Text} from \"@kahi-ui/framework\"; </script> <Text class=\"my-text\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. </Text> <style> :global(.my-text) { color: red; } </style> style NOTE : Introduced feature in v0.2.0. style allows you to apply inline CSS properties to Components. <script> import {Text} from \"@kahi-ui/framework\"; </script> <Text style=\"color:red;\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. </Text> id NOTE : Introduced feature in v0.2.0. id allows you to set an identifier that other elements can target or targettable for scrolling by a URL fragment . <script> import { Anchor, Heading, Spacer, } from \"@kahi-ui/framework\"; </script> <Anchor href=\"#target-heading\"> Scroll to Heading! </Anchor> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Heading id=\"target-heading\">Hello World!</Heading> name NOTE : Introduced feature in v0.2.0. name allows you to set an identifier for the Component to set its value to in a form, or, can targettable by an Anchor . <script> import {Anchor} from \"@kahi-ui/framework\"; </script> <Anchor target=\"target-iframe\" href=\"/\"> Open Landing Page </Anchor> <iframe name=\"target-iframe\" width=\"100%\" height=\"256\" /> title NOTE : Introduced feature in v0.2.0. title allows you to set a timed effect to show a text tooltip whenever an end-user hovers for long enough. Typically you don't want to rely on this attribute for the UI. Rather use it for semantic and assistive purposes. <script> import {Text} from \"@kahi-ui/framework\"; </script> <Text title=\"I am some additional text!\"> Hover me! </Text> tabindex NOTE : Introduced feature in v0.2.0. tabindex allows you to configure how the Browser cycles through elements in the current stacking context when they press their tab keyboard button, or similar. <script> import {Button} from \"@kahi-ui/framework\"; </script> <Button tabindex=\"3\">Index #3</Button> <Button tabindex=\"1\">Index #1</Button> <Button tabindex=\"-1\">Unselectable</Button> <Button tabindex=\"4\">Index #4</Button> <Button tabindex=\"2\">Index #2</Button> TODO : Event samples "},{"identifier":"/docs/globals/sizes","title":"Sizes","text":"Sizes All Components have access to the global height, width, and size HTML data attributes. All of which, supports Responsitivity . Width NOTE : Introduced feature in v0.2.0. NOTE : Introduced block sizing feature in v0.6.0. NOTE : Introduced icon sizing feature in v0.6.0. NOTE : Introduced Viewport breakpoint sizing feature in v0.6.0. NOTE : By passing an array, you can set responsive values . e.g. width={[\"25\", \"tablet:viewport-50\"]} You can set a defined width for your Components via the width property. <script> import { Box, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container spacing=\"medium\"> <div> <Text is=\"strong\">auto</Text> <Box palette=\"affirmative\" width=\"auto\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">content-fit</Text> <Box palette=\"negative\" width=\"content-fit\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">content-max</Text> <Box palette=\"alert\" width=\"content-max\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">content-min</Text> <Box palette=\"affirmative\" width=\"content-min\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">prose</Text> <Box palette=\"negative\" width=\"prose\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">mobile</Text> <Box palette=\"alert\" width=\"mobile\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">tablet</Text> <Box palette=\"affirmative\" width=\"tablet\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">desktop</Text> <Box palette=\"negative\" width=\"desktop\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">widescreen</Text> <Box palette=\"alert\" width=\"widescreen\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">0</Text> <Box palette=\"affirmative\" width=\"0\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">25</Text> <Box palette=\"negative\" width=\"25\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">33</Text> <Box palette=\"alert\" width=\"33\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">50</Text> <Box palette=\"affirmative\" width=\"50\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">66</Text> <Box palette=\"negative\" width=\"66\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">75</Text> <Box palette=\"alert\" width=\"75\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">100</Text> <Box palette=\"affirmative\" width=\"100\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">viewport-0</Text> <Box palette=\"affirmative\" width=\"viewport-0\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">viewport-25</Text> <Box palette=\"negative\" width=\"viewport-25\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">viewport-33</Text> <Box palette=\"alert\" width=\"viewport-33\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">viewport-50</Text> <Box palette=\"affirmative\" width=\"viewport-50\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">viewport-66</Text> <Box palette=\"negative\" width=\"viewport-66\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">viewport-75</Text> <Box palette=\"alert\" width=\"viewport-75\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">viewport-100</Text> <Box palette=\"affirmative\" width=\"viewport-100\" > <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">icon-nano</Text> <Box palette=\"negative\" width=\"icon-nano\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">icon-tiny</Text> <Box palette=\"alert\" width=\"icon-tiny\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">icon-small</Text> <Box palette=\"affirmative\" width=\"icon-small\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">icon-medium</Text> <Box palette=\"negative\" width=\"icon-medium\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">icon-large</Text> <Box palette=\"alert\" width=\"icon-large\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">icon-huge</Text> <Box palette=\"affirmative\" width=\"icon-huge\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">icon-massive</Text> <Box palette=\"negative\" width=\"icon-massive\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">nano</Text> <Box palette=\"alert\" width=\"nano\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">tiny</Text> <Box palette=\"affirmative\" width=\"tiny\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">small</Text> <Box palette=\"negative\" width=\"small\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">medium</Text> <Box palette=\"alert\" width=\"medium\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">large</Text> <Box palette=\"affirmative\" width=\"large\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">huge</Text> <Box palette=\"negative\" width=\"huge\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">massive</Text> <Box palette=\"alert\" width=\"massive\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> </Stack.Container> Height NOTE : Introduced feature in v0.2.0. NOTE : Introduced block sizing feature in v0.6.0. NOTE : Introduced icon sizing feature in v0.6.0. NOTE : Introduced Viewport breakpoint sizing feature in v0.6.0. NOTE : By passing an array, you can set responsive values . e.g. height={[\"25\", \"tablet:viewport-50\"]} You can set a defined height for your Components via the height property. <script> import { Box, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" > <div> <Text is=\"strong\">auto</Text> <Box palette=\"affirmative\" height=\"auto\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">content-fit</Text> <Box palette=\"negative\" height=\"content-fit\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">content-max</Text> <Box palette=\"alert\" height=\"content-max\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">content-min</Text> <Box palette=\"affirmative\" height=\"content-min\" > <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">prose</Text> <Box palette=\"negative\" height=\"prose\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">mobile</Text> <Box palette=\"alert\" width=\"mobile\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">tablet</Text> <Box palette=\"affirmative\" width=\"tablet\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">desktop</Text> <Box palette=\"negative\" width=\"desktop\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">widescreen</Text> <Box palette=\"alert\" width=\"widescreen\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">stretch</Text> <Box palette=\"alert\" height=\"stretch\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">0</Text> <Box palette=\"affirmative\" height=\"0\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">25</Text> <Box palette=\"negative\" height=\"25\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">33</Text> <Box palette=\"alert\" height=\"33\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">50</Text> <Box palette=\"affirmative\" height=\"50\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">66</Text> <Box palette=\"negative\" height=\"66\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">75</Text> <Box palette=\"alert\" height=\"75\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">100</Text> <Box palette=\"affirmative\" height=\"100\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">viewport-0</Text> <Box palette=\"affirmative\" height=\"viewport-0\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">viewport-25</Text> <Box palette=\"negative\" height=\"viewport-25\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">viewport-33</Text> <Box palette=\"alert\" height=\"viewport-33\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">viewport-50</Text> <Box palette=\"affirmative\" height=\"viewport-50\" > <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">viewport-66</Text> <Box palette=\"negative\" height=\"viewport-66\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">viewport-75</Text> <Box palette=\"alert\" height=\"viewport-75\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">viewport-100</Text> <Box palette=\"affirmative\" height=\"viewport-100\" > <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">icon-nano</Text> <Box palette=\"negative\" width=\"icon-nano\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">icon-tiny</Text> <Box palette=\"alert\" width=\"icon-tiny\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">icon-small</Text> <Box palette=\"affirmative\" width=\"icon-small\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">icon-medium</Text> <Box palette=\"negative\" width=\"icon-medium\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">icon-large</Text> <Box palette=\"alert\" width=\"icon-large\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">icon-huge</Text> <Box palette=\"affirmative\" width=\"icon-huge\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">icon-massive</Text> <Box palette=\"negative\" width=\"icon-massive\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">nano</Text> <Box palette=\"alert\" width=\"nano\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">tiny</Text> <Box palette=\"affirmative\" width=\"tiny\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">small</Text> <Box palette=\"negative\" width=\"small\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">medium</Text> <Box palette=\"alert\" width=\"medium\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">large</Text> <Box palette=\"affirmative\" width=\"large\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">huge</Text> <Box palette=\"negative\" width=\"huge\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">massive</Text> <Box palette=\"alert\" width=\"massive\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> </Stack.Container> Size NOTE : Introduced feature in v0.6.0. NOTE : By passing an array, you can set responsive values . e.g. size={[\"25\", \"tablet:viewport-50\"]} You can set a defined width + height for your Components via the size property. <script> import { Box, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container spacing=\"medium\"> <div> <Text is=\"strong\">auto</Text> <Box palette=\"affirmative\" size=\"auto\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">content-fit</Text> <Box palette=\"negative\" size=\"content-fit\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">content-max</Text> <Box palette=\"alert\" size=\"content-max\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">content-min</Text> <Box palette=\"affirmative\" size=\"content-min\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">prose</Text> <Box palette=\"negative\" size=\"prose\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">mobile</Text> <Box palette=\"alert\" size=\"mobile\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">tablet</Text> <Box palette=\"affirmative\" size=\"tablet\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">desktop</Text> <Box palette=\"negative\" size=\"desktop\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">widescreen</Text> <Box palette=\"alert\" size=\"widescreen\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">0</Text> <Box palette=\"affirmative\" size=\"0\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">25</Text> <Box palette=\"negative\" size=\"25\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">33</Text> <Box palette=\"alert\" size=\"33\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">50</Text> <Box palette=\"affirmative\" size=\"50\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">66</Text> <Box palette=\"negative\" size=\"66\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">75</Text> <Box palette=\"alert\" size=\"75\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">100</Text> <Box palette=\"affirmative\" size=\"100\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">viewport-0</Text> <Box palette=\"affirmative\" size=\"viewport-0\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">viewport-25</Text> <Box palette=\"negative\" size=\"viewport-25\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">viewport-33</Text> <Box palette=\"alert\" size=\"viewport-33\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">viewport-50</Text> <Box palette=\"affirmative\" size=\"viewport-50\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">viewport-66</Text> <Box palette=\"negative\" size=\"viewport-66\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">viewport-75</Text> <Box palette=\"alert\" size=\"viewport-75\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">viewport-100</Text> <Box palette=\"affirmative\" size=\"viewport-100\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">icon-nano</Text> <Box palette=\"negative\" size=\"icon-nano\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">icon-tiny</Text> <Box palette=\"alert\" size=\"icon-tiny\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">icon-small</Text> <Box palette=\"affirmative\" size=\"icon-small\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">icon-medium</Text> <Box palette=\"negative\" size=\"icon-medium\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">icon-large</Text> <Box palette=\"alert\" size=\"icon-large\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">icon-huge</Text> <Box palette=\"affirmative\" size=\"icon-huge\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">icon-massive</Text> <Box palette=\"negative\" size=\"icon-massive\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">nano</Text> <Box palette=\"alert\" size=\"nano\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">tiny</Text> <Box palette=\"affirmative\" size=\"tiny\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">small</Text> <Box palette=\"negative\" size=\"small\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">medium</Text> <Box palette=\"alert\" size=\"medium\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">large</Text> <Box palette=\"affirmative\" size=\"large\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">huge</Text> <Box palette=\"negative\" size=\"huge\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> <div> <Text is=\"strong\">massive</Text> <Box palette=\"alert\" size=\"massive\"> <Text variation=\"truncate\"> Lorem ipsum dolor </Text> </Box> </div> </Stack.Container> Minimums + Maximums NOTE : Introduced feature in v0.2.0. You can also set minimums or maximum sizes via prefixing your properties with max_ or min_. <script> import {Box, Text} from \"@kahi-ui/framework\"; </script> <Box palette=\"affirmative\" padding=\"small\" style=\"width:15rem;\" > <Box palette=\"negative\" max_width=\"25\"> <Text variation=\"truncate\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. </Text> </Box> </Box> "},{"identifier":"/docs/globals/spacings","title":"Spacings","text":"Spacings All Components have access to the global margin and padding HTML data attributes. All of which, supports Responsitivity . Margin NOTE : Introduced feature in v0.2.0. NOTE : By passing an array, you can set responsive values . e.g. margin={[\"small\", \"tablet:large\"]} You can set margins for your Components via the margin property. <script> import { Box, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" alignment_y=\"top\" spacing=\"medium\" variation=\"wrap\" > <Box palette=\"negative\"> <Box palette=\"neutral\" margin=\"none\">NONE</Box> </Box> <Box palette=\"negative\"> <Box palette=\"neutral\" margin=\"nano\">NANO</Box> </Box> <Box palette=\"negative\"> <Box palette=\"neutral\" margin=\"tiny\">TINY</Box> </Box> <Box palette=\"negative\"> <Box palette=\"neutral\" margin=\"small\"> SMALL </Box> </Box> <Box palette=\"negative\"> <Box palette=\"neutral\" margin=\"medium\"> MEDIUM </Box> </Box> <Box palette=\"negative\"> <Box palette=\"neutral\" margin=\"large\"> LARGE </Box> </Box> <Box palette=\"negative\"> <Box palette=\"neutral\" margin=\"huge\">HUGE</Box> </Box> <Box palette=\"negative\"> <Box palette=\"neutral\" margin=\"massive\"> MASSIVE </Box> </Box> </Stack.Container> Padding NOTE : Introduced feature in v0.2.0. NOTE : By passing an array, you can set responsive values . e.g. padding={[\"small\", \"tablet:large\"]} You can set paddings for your Components via the padding property. <script> import { Box, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" alignment_y=\"top\" spacing=\"medium\" variation=\"wrap\" > <Box palette=\"informative\" padding=\"none\"> <Box palette=\"neutral\">NONE</Box> </Box> <Box palette=\"informative\" padding=\"nano\"> <Box palette=\"neutral\">NANO</Box> </Box> <Box palette=\"informative\" padding=\"tiny\"> <Box palette=\"neutral\">TINY</Box> </Box> <Box palette=\"informative\" padding=\"small\"> <Box palette=\"neutral\">SMALL</Box> </Box> <Box palette=\"informative\" padding=\"medium\"> <Box palette=\"neutral\">MEDIUM</Box> </Box> <Box palette=\"informative\" padding=\"large\"> <Box palette=\"neutral\">LARGE</Box> </Box> <Box palette=\"informative\" padding=\"huge\"> <Box palette=\"neutral\">HUGE</Box> </Box> <Box palette=\"informative\" padding=\"massive\"> <Box palette=\"neutral\">MASSIVE</Box> </Box> </Stack.Container> Directional All Spacings properties have directional support via the *_x, *_y, *_left, *_top, *_right, and *_bottom suffixes. <script> import {Box, Code} from \"@kahi-ui/framework\"; </script> <Box palette=\"affirmative\" padding_y=\"small\"> <Code>padding_y=\"small\"</Code> </Box> <Box palette=\"negative\" margin_top=\"large\"> <Code>margin_top=\"large\"</Code> </Box> "},{"identifier":"/docs/globals/sveltekit","title":"SvelteKit","text":"SvelteKit All Components have access to all global SvelteKit attributes. sveltekit:noscroll NOTE : Introduced feature in v0.2.0. sveltekit:noscroll configures SvelteKit to disable scrolling to top / linked element ID #hash whenever the link is clicked. <script> import {Anchor} from \"@kahi-ui/framework\"; </script> <Anchor href=\"/docs/interactables/button\" sveltekit:noscroll > Goto Button </Anchor> sveltekit:prefetch NOTE : Introduced feature in v0.2.0. sveltekit:prefetch configures SvelteKit to fetch the linked route's load whenever the link is hovered. <script> import {Anchor} from \"@kahi-ui/framework\"; </script> <Anchor href=\"/docs/interactables/button\" sveltekit:prefetch > Goto Button </Anchor> "},{"identifier":"/docs/guides/getting-started","title":"Getting Started","text":"Getting Started Installation Using a terminal inside of your project's directory, use npm to install the package. npm install @kahi-ui/framework Importing Stylesheet WARNING : This feature received a breaking change in v0.6.0 . First if your toolchain supports it, import the required CSS files from @kahi-ui/framework/dist: // For non-minified: import \"@kahi-ui/framework/dist/kahi-ui.framework.css\"; import \"@kahi-ui/framework/dist/kahi-ui.theme.default.css\"; // For minified: import \"@kahi-ui/framework/dist/kahi-ui.framework.min.css\"; import \"@kahi-ui/framework/dist/kahi-ui.theme.default.min.css\"; Otherwise download the required CSS files from Releases and use <link rel=\"stylesheet\">: <html> <head> <!-- For non-minified: --> <link rel=\"stylesheet\" href=\"/path/to/kahi-ui.framework.css\" /> <link rel=\"stylesheet\" href=\"/path/to/kahi-ui.theme.default.css\" /> <!-- For minified: --> <link rel=\"stylesheet\" href=\"/path/to/kahi-ui.framework.min.css\" /> <link rel=\"stylesheet\" href=\"/path/to/kahi-ui.theme.default.min.css\" /> </head> </html> Usage Import Components by their variable name from @kahi-ui/framework: <script> import {Button, Heading} from \"@kahi-ui/framework\"; let clicks = 0; function on_click(event) { clicks++; } </script> <Heading> Clicks: {clicks} </Heading> <Button on:click={on_click}>Add +1</Button> Some Components are multi-part patterns, so you'll need to import their namespaces: <script> import { Button, Card, Text, } from \"@kahi-ui/framework\"; </script> <Card.Container class=\"getting-started-patterns\"> <Card.Figure> <img src={IMAGE_BACKGROUND} /> </Card.Figure> <Card.Header>Lorem Ipsum</Card.Header> <Card.Section> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </Card.Section> <Card.Footer> <Button palette=\"affirmative\"> Open Details </Button> </Card.Footer> </Card.Container> <style> :global(.getting-started-patterns) { max-width: 35ch; } </style> "},{"identifier":"/docs/interactables/button","title":"Button","text":"Button NOTE : Introduced feature in v0.2.0. Button is used to usually trigger an action in the Web Application, such as submitting forms or opening an Overlay. <script> import {Button} from \"@kahi-ui/framework\"; </script> <Button palette=\"accent\">Click Me!</Button> Imports <script> import {Button} from \"@kahi-ui/framework\"; </script> Palette You can change the color palette of the Button via the palette property. <script> import {Button, Stack} from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <Button>This is a DEFAULT Button!</Button> <Button palette=\"accent\"> This is a ACCENT Button! </Button> <Button palette=\"neutral\"> This is a NEUTRAL Button! </Button> <Button palette=\"light\"> This is a LIGHT Button! </Button> <Button palette=\"dark\"> This is a DARK Button! </Button> <Button palette=\"alert\"> This is a ALERT Button! </Button> <Button palette=\"affirmative\"> This is a AFFIRMATIVE Button! </Button> <Button palette=\"informative\"> This is a INFORMATIVE Button! </Button> <Button palette=\"negative\"> This is a NEGATIVE Button! </Button> </Stack.Container> Clear Button components have a special variation that renders as text with no background, that lightly fills in when clicked. <script> import {Button, Stack} from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <Button variation=\"clear\"> This is a DEFAULT Button! </Button> <Button variation=\"clear\" palette=\"accent\"> This is a ACCENT Button! </Button> <Button variation=\"clear\" palette=\"neutral\"> This is a NEUTRAL Button! </Button> <Button variation=\"clear\" palette=\"light\"> This is a LIGHT Button! </Button> <Button variation=\"clear\" palette=\"dark\"> This is a DARK Button! </Button> <Button variation=\"clear\" palette=\"alert\"> This is a ALERT Button! </Button> <Button variation=\"clear\" palette=\"affirmative\"> This is a AFFIRMATIVE Button! </Button> <Button variation=\"clear\" palette=\"informative\"> This is a INFORMATIVE Button! </Button> <Button variation=\"clear\" palette=\"negative\"> This is a NEGATIVE Button! </Button> </Stack.Container> Outline Button components have a special variation that renders them as text with an outline, the fills in when clicked. <script> import {Button, Stack} from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <Button variation=\"outline\"> This is a DEFAULT Button! </Button> <Button variation=\"outline\" palette=\"accent\"> This is a ACCENT Button! </Button> <Button variation=\"outline\" palette=\"neutral\"> This is a NEUTRAL Button! </Button> <Button variation=\"outline\" palette=\"light\"> This is a LIGHT Button! </Button> <Button variation=\"outline\" palette=\"dark\"> This is a DARK Button! </Button> <Button variation=\"outline\" palette=\"alert\"> This is a ALERT Button! </Button> <Button variation=\"outline\" palette=\"affirmative\"> This is a AFFIRMATIVE Button! </Button> <Button variation=\"outline\" palette=\"informative\"> This is a INFORMATIVE Button! </Button> <Button variation=\"outline\" palette=\"negative\"> This is a NEGATIVE Button! </Button> </Stack.Container> Subtle NOTE : Introduced feature in v0.5.1. You can alter the Button Component to use less intense / remove \"attention grabbing\" animations via the variation property. <script> import {Button, Stack} from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <Button palette=\"inverse\" variation=\"subtle\"> This is a SUBTLE BLOCK Button! </Button> <Button palette=\"inverse\" variation={[\"subtle\", \"clear\"]} > This is a CLEAR OUTLINE Button! </Button> <Button palette=\"inverse\" variation={[\"subtle\", \"outline\"]} > This is a SUBTLE OUTLINE Button! </Button> </Stack.Container> States You can control the state of the Button via the active and disabled properties. <script> import { Button, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Text is=\"strong\">DEFAULT</Text> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <Button>DEFAULT</Button> <Button disabled>DISABLED INACTIVE</Button> <Button active>ACTIVE</Button> <Button active disabled>DISABLED ACTIVE</Button> </Stack.Container> <Text is=\"strong\">OUTLINE</Text> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <Button variation=\"outline\">DEFAULT</Button> <Button variation=\"outline\" disabled> DISABLED INACTIVE </Button> <Button variation=\"outline\" active>ACTIVE</Button> <Button variation=\"outline\" active disabled> DISABLED ACTIVE </Button> </Stack.Container> <Text is=\"strong\">CLEAR</Text> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <Button variation=\"clear\">DEFAULT</Button> <Button variation=\"clear\" disabled> DISABLED INACTIVE </Button> <Button variation=\"clear\" active>ACTIVE</Button> <Button variation=\"clear\" active disabled> DISABLED ACTIVE </Button> </Stack.Container> Sizing WARNING : This feature was renamed from size to sizing in v0.6.0 . NOTE : By passing an array, you can set responsive values . e.g. sizing={[\"tiny\", \"tablet:medium\", \"mobile:medium\"]} You can change the size of the Button via the sizing property. <script> import {Button, Stack} from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" alignment_y=\"top\" spacing=\"medium\" variation=\"wrap\" > <Button>This is a DEFAULT Button!</Button> <Button sizing=\"nano\"> This is a NANO Button! </Button> <Button sizing=\"tiny\"> This is a TINY Button! </Button> <Button sizing=\"small\"> This is a SMALL Button! </Button> <Button sizing=\"medium\"> This is a MEDIUM Button! </Button> <Button sizing=\"large\"> This is a LARGE Button! </Button> <Button sizing=\"huge\"> This is a HUGE Button! </Button> <Button sizing=\"massive\"> This is a MASSIVE Button! </Button> </Stack.Container> Radius NOTE : Introduced feature in v0.6.0. NOTE : By passing an array, you can set responsive values . e.g. radius={[\"tiny\", \"tablet:medium\", \"mobile:medium\"]} You can change the border radius of the Button via the radius property. <script> import {Button, Stack} from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" alignment_y=\"top\" spacing=\"medium\" variation=\"wrap\" > <Button>This is a DEFAULT Button!</Button> <Button radius=\"none\"> This is a NONE Button! </Button> <Button radius=\"nano\"> This is a NANO Button! </Button> <Button radius=\"tiny\"> This is a TINY Button! </Button> <Button radius=\"small\"> This is a SMALL Button! </Button> <Button radius=\"medium\"> This is a MEDIUM Button! </Button> <Button radius=\"large\"> This is a LARGE Button! </Button> <Button radius=\"huge\"> This is a HUGE Button! </Button> <Button radius=\"massive\"> This is a MASSIVE Button! </Button> </Stack.Container> Shapes NOTE : Introduced feature in v0.6.0. NOTE : By passing an array, you can set responsive values . e.g. shape={[\"circle\", \"tablet:pill\", \"mobile:pill\"]} You can change the shape of the Button via the shape property. <script> import {Button, Stack} from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" alignment_y=\"top\" spacing=\"medium\" variation=\"wrap\" > <Button>This is a DEFAULT Button!</Button> <Button shape=\"circle\"> This is a CIRCLE Button! </Button> <Button shape=\"pill\"> This is a PILL Button! </Button> </Stack.Container> Elements WARNING : This feature was updated to require explicit is property in v0.6.0 . You can alter the HTML element tag rendered to DOM via the is property to render things like links and form buttons. <script> import { Button, Check, Stack, } from \"@kahi-ui/framework\"; </script> <Check id=\"button-types-label\" /> <Stack.Container alignment_y=\"top\" orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <Button>This is a DEFAULT Button!</Button> <Button is=\"a\" href=\"https://google.com\" target=\"_blank\" rel=\"noopener noreferrer\" > This is an ANCHOR Button! </Button> <Button is=\"label\" for=\"button-types-label\"> This is a LABEL Button! </Button> <Button is=\"input\" value=\"This is an INPUT Button!\" /> <Button is=\"input\" type=\"submit\" value=\"This is a SUBMIT Button!\" /> <Button is=\"input\" type=\"reset\" value=\"This is a RESET Button!\" /> </Stack.Container> "},{"identifier":"/docs/interactables/check","title":"Check","text":"Check NOTE : Introduced feature in v0.2.7. Check is typically used to present a set of options to the end-user, which they can then choose from. <script> import { Check, Form, Stack, Text, } from \"@kahi-ui/framework\"; let logic_state = [\"cheese\", \"onion\"]; </script> <Text is=\"strong\"> Select Pizza Toppings <Text is=\"sup\">{logic_state}</Text> </Text> <Stack.Container orientation=\"horizontal\" spacing=\"small\" variation=\"wrap\" margin_top=\"small\" > <Form.Group name=\"check-preview\" bind:logic_state> <Check id=\"check-preview-cheese\" palette=\"accent\" sizing=\"tiny\" value=\"cheese\" > Cheese </Check> <Check id=\"check-preview-pepperoni\" palette=\"accent\" sizing=\"tiny\" value=\"pepperoni\" > Pepperoni </Check> <Check id=\"check-preview-onion\" palette=\"accent\" sizing=\"tiny\" value=\"onion\" > Onion </Check> <Check id=\"check-preview-pineapple\" palette=\"accent\" sizing=\"tiny\" value=\"pineapple\" > Pineapple </Check> </Form.Group> </Stack.Container> Imports <script> import {Check} from \"@kahi-ui/framework\"; </script> States You can control the state of the Check via the active, disabled, and state properties. <script> import { Check, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div> <Text is=\"strong\">DEFAULT</Text> <br /> <Check /> </div> <div> <Text is=\"strong\">STATE</Text> <br /> <Check state /> </div> <div> <Text is=\"strong\">ACTIVE NO-STATE</Text> <br /> <Check active /> </div> <div> <Text is=\"strong\">ACTIVE STATE</Text> <br /> <Check active state /> </div> <div> <Text is=\"strong\">DISABLED NO-STATE</Text> <br /> <Check disabled /> </div> <div> <Text is=\"strong\">DISABLED STATE</Text> <br /> <Check disabled state /> </div> </Stack.Container> Palette You can change the color palette of the Check via the palette property. <script> import { Check, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div> <Text is=\"strong\">DEFAULT</Text> <br /> <Check /> </div> <div> <Text is=\"strong\">ACCENT</Text> <br /> <Check palette=\"accent\" /> </div> <div> <Text is=\"strong\">NEUTRAL</Text> <br /> <Check palette=\"neutral\" /> </div> <div> <Text is=\"strong\">DARK</Text> <br /> <Check palette=\"dark\" /> </div> <div> <Text is=\"strong\">LIGHT</Text> <br /> <Check palette=\"light\" /> </div> <div> <Text is=\"strong\">ALERT</Text> <br /> <Check palette=\"alert\" /> </div> <div> <Text is=\"strong\">AFFIRMATIVE</Text> <br /> <Check palette=\"affirmative\" /> </div> <div> <Text is=\"strong\">INFORMATIVE</Text> <br /> <Check palette=\"informative\" /> </div> <div> <Text is=\"strong\">NEGATIVE</Text> <br /> <Check palette=\"negative\" /> </div> </Stack.Container> Sizing WARNING : This feature was renamed from size to sizing in v0.6.0 . NOTE : By passing an array, you can set responsive values . e.g. sizing={[\"tiny\", \"tablet:medium\", \"mobile:medium\"]} You can change the size of the Check via the sizing property. <script> import { Check, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div> <Text is=\"strong\">DEFAULT</Text> <br /> <Check /> </div> <div> <Text is=\"strong\">NANO</Text> <br /> <Check sizing=\"nano\" /> </div> <div> <Text is=\"strong\">TINY</Text> <br /> <Check sizing=\"tiny\" /> </div> <div> <Text is=\"strong\">SMALL</Text> <br /> <Check sizing=\"small\" /> </div> <div> <Text is=\"strong\">MEDIUM</Text> <br /> <Check sizing=\"medium\" /> </div> <div> <Text is=\"strong\">LARGE</Text> <br /> <Check sizing=\"large\" /> </div> <div> <Text is=\"strong\">HUGE</Text> <br /> <Check sizing=\"huge\" /> </div> <div> <Text is=\"strong\">MASSIVE</Text> <br /> <Check sizing=\"massive\" /> </div> </Stack.Container> Flush NOTE : Introduced feature in v0.2.13. You can change the appearance of the Check to be flush with the rest of the Application content via the variation property. <script> import { Check, Menu, Spacer, } from \"@kahi-ui/framework\"; </script> <Menu.Container> <Menu.Heading>Filter</Menu.Heading> <Menu.Label for=\"check-flush-cpus\"> CPUs <Spacer /> <Check value=\"cpus\" palette=\"accent\" variation=\"flush\" /> </Menu.Label> <Menu.Label for=\"check-flush-hard-drives\"> Hard Drives <Spacer /> <Check value=\"hard-drives\" palette=\"accent\" variation=\"flush\" state /> </Menu.Label> <Menu.Label for=\"check-flush-solid-state-drives\"> Solid State Drives <Spacer /> <Check value=\"solid-state-drives\" palette=\"accent\" variation=\"flush\" /> </Menu.Label> </Menu.Container> "},{"identifier":"/docs/interactables/filedropinput","title":"FileDropInput","text":"FileDropInput NOTE : Introduced feature in v0.4.6. NOTE : Keep in mind, while the Component does work without Javascript, it cannot display its value like FileInput can without. FileDropInput acts as a click-to-prompt and drag'n'drop file input stylized as an alternative to FileInput. <script> import { Button, FileDropInput, Stack, Text, Tile, } from \"@kahi-ui/framework\"; import {X} from \"lucide-svelte\"; function on_change(event) { if (!event.isTrusted) return; const {target} = event; files = [ ...files, ...Array.from(target.files), ]; target.value = \"\"; } function on_clear_click(event) { files = []; } function on_remove_click(event, file) { files = files.filter( (_file) => file !== _file ); } let files = []; </script> <FileDropInput multiple on:change={on_change}> <Stack.Container spacing=\"medium\"> <Text is=\"strong\" variation=\"block\" sizing=\"large\" > &uparrow; </Text> <Text>Drag-and-drop files here...</Text> </Stack.Container> </FileDropInput> {#if files.length > 0} <Stack.Container spacing=\"medium\" margin_y=\"medium\" > {#each files as file (file.name)} <Tile.Container sizing=\"small\"> <Tile.Section> <Tile.Header> {file.name} </Tile.Header> <Text>{file.type}</Text> </Tile.Section> <Tile.Footer> <Button variation=\"clear\" sizing=\"small\" palette=\"negative\" on:click={(event) => on_remove_click( event, file )} > <X size=\"1em\" /> </Button> </Tile.Footer> </Tile.Container> {/each} </Stack.Container> <Stack.Container alignment_x=\"right\"> <Button variation=\"clear\" palette=\"negative\" on:click={on_clear_click} > Clear All </Button> </Stack.Container> {/if} Imports <script> import {FileDropInput} from \"@kahi-ui/framework\"; </script> Palette You can change the color palette of the FileDropInput via the palette property. <script> import { FileDropInput, Mosaic, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Mosaic.Container sizing=\"medium\" spacing=\"medium\"> <FileDropInput> <Stack.Container spacing=\"medium\"> <Text is=\"strong\" variation=\"block\" sizing=\"large\" > &uparrow; </Text> <Text>DEFAULT</Text> </Stack.Container> </FileDropInput> <FileDropInput palette=\"accent\"> <Stack.Container spacing=\"medium\"> <Text is=\"strong\" variation=\"block\" sizing=\"large\" > &uparrow; </Text> <Text>ACCENT</Text> </Stack.Container> </FileDropInput> <FileDropInput palette=\"neutral\"> <Stack.Container spacing=\"medium\"> <Text is=\"strong\" variation=\"block\" sizing=\"large\" > &uparrow; </Text> <Text>NEUTRAL</Text> </Stack.Container> </FileDropInput> <FileDropInput palette=\"dark\"> <Stack.Container spacing=\"medium\"> <Text is=\"strong\" variation=\"block\" sizing=\"large\" > &uparrow; </Text> <Text>DARK</Text> </Stack.Container> </FileDropInput> <FileDropInput palette=\"light\"> <Stack.Container spacing=\"medium\"> <Text is=\"strong\" variation=\"block\" sizing=\"large\" > &uparrow; </Text> <Text>LIGHT</Text> </Stack.Container> </FileDropInput> <FileDropInput palette=\"alert\"> <Stack.Container spacing=\"medium\"> <Text is=\"strong\" variation=\"block\" sizing=\"large\" > &uparrow; </Text> <Text>ALERT</Text> </Stack.Container> </FileDropInput> <FileDropInput palette=\"affirmative\"> <Stack.Container spacing=\"medium\"> <Text is=\"strong\" variation=\"block\" sizing=\"large\" > &uparrow; </Text> <Text>AFFIRMATIVE</Text> </Stack.Container> </FileDropInput> <FileDropInput palette=\"informative\"> <Stack.Container spacing=\"medium\"> <Text is=\"strong\" variation=\"block\" sizing=\"large\" > &uparrow; </Text> <Text>INFORMATIVE</Text> </Stack.Container> </FileDropInput> <FileDropInput palette=\"negative\"> <Stack.Container spacing=\"medium\"> <Text is=\"strong\" variation=\"block\" sizing=\"large\" > &uparrow; </Text> <Text>NEGATIVE</Text> </Stack.Container> </FileDropInput> </Mosaic.Container> "},{"identifier":"/docs/interactables/form","title":"Form","text":"Form Form Components are helpers to supplement input Components that are meant for form Components like TextInput . HelpText NOTE : Introduced feature in v0.2.7. Form.HelpText is typically used for displaying information about how to input information into a form properly. <script> import {Form, TextInput} from \"@kahi-ui/framework\"; </script> <TextInput type=\"password\" /> <Form.HelpText> passwords must be 8+ characters at minimum </Form.HelpText> Imports <script> import {Form} from \"@kahi-ui/framework\"; const { Control, Group, FieldSet, HelpText, Label, Legend, } = Form; </script> Label NOTE : Introduced feature in v0.2.7. IMPORTANT : This feature sets a Svelte Context that inner content can consume. Form.Label focuses the target input Component whenever its child content is clicked. <script> import {Check, Form} from \"@kahi-ui/framework\"; </script> <Form.Label for=\"form-label-group\"> <Check /> Click me! </Form.Label> Control NOTE : Introduced feature in v0.2.7. IMPORTANT : This feature sets a Svelte Context that inner content can consume. Form.Control is typically used to display form and input Components in a preformatted stack. <script> import { Code, Form, TextInput, } from \"@kahi-ui/framework\"; let value = \"sample@sample.org\"; </script> <Form.Control logic_id=\"form-control\"> <Form.Label> Register E-Mail for Newsletter </Form.Label> <TextInput bind:value /> <Form.HelpText> Make sure to enter a valid E-Mail Address, e.g. <Code>sample@sample.org</Code> </Form.HelpText> </Form.Control> Group NOTE : Introduced feature in v0.2.7. NOTE : This feature is renderless, meaning it does not render anything extra to the DOM. Form.Group lets you directly set the relevant form-related Svelte Contexts via its properties without using any preformatted shown above. <script> import { Form, Radio, Stack, Text, } from \"@kahi-ui/framework\"; let logic_state = \"vanilla\"; </script> <Text is=\"strong\"> Select an Ice Cream Flavor <Text is=\"sup\">{logic_state}</Text> </Text> <Stack.Container spacing=\"small\" margin_top=\"small\"> <Form.Group logic_name=\"form-group\" bind:logic_state > <Radio id=\"form-group-bubblegum\" palette=\"accent\" sizing=\"tiny\" value=\"bubblegum\" > Bubblegum </Radio> <Radio id=\"form-group-chocolate\" palette=\"accent\" sizing=\"tiny\" value=\"chocolate\" > Chocolate </Radio> <Radio id=\"form-group-vanilla\" palette=\"accent\" sizing=\"tiny\" value=\"vanilla\" > Vanilla </Radio> </Form.Group> </Stack.Container> Legend NOTE : Introduced feature in v0.6.0. IMPORTANT : When using outside of a Form.FieldSet, use <Form.Legend is=\"span\"> for semantically correct HTML tags. Form.Legend is typically used for categorization headings, rendering text as smaller bold text with letter spacing. <script> import {Form} from \"@kahi-ui/framework\"; </script> <Form.Legend>VEGETABLES</Form.Legend> FieldSet NOTE : Introduced feature in v0.6.0. Form.FieldSet is typically used for grouping together related form Components into a visually distinct box. <script> import { Form, Stack, TextInput, } from \"@kahi-ui/framework\"; </script> <Form.FieldSet> <Form.Legend>Personal Details</Form.Legend> <Stack.Container spacing=\"medium\"> <Form.Control logic_id=\"form-fieldset-first-name\" logic_name=\"form-fieldset-first-name\" > <Form.Label>First Name</Form.Label> <TextInput value=\"John\" /> </Form.Control> <Form.Control logic_id=\"form-fieldset-first-name\" logic_name=\"form-fieldset-first-name\" > <Form.Label>Last Name</Form.Label> <TextInput value=\"Smith\" /> </Form.Control> </Stack.Container> </Form.FieldSet> "},{"identifier":"/docs/interactables/hiddeninput","title":"HiddenInput","text":"HiddenInput NOTE : Introduced feature in v0.2.13. TODO : documentation ... "},{"identifier":"/docs/interactables/numberinput","title":"NumberInput","text":"NumberInput NOTE : Introduced feature in v0.4.14. IMPORTANT : This feature only runs on Javascript-enabled clients, you NEED to ALWAYS validate user input on the server. NumberInput is a subset of NumberInput , which only accepts numbers and masks user input accordingly. <script> import {NumberInput} from \"@kahi-ui/framework\"; let value = 42; </script> <NumberInput bind:value /> Imports <script> import {NumberInput} from \"@kahi-ui/framework\"; </script> Maximum + Minimum NOTE : Introduced feature in v0.6.0. You can have the NumberInput use disallow typing in numbers not within the range of the max and min properties. <script> import {NumberInput} from \"@kahi-ui/framework\"; let value = 42; </script> <NumberInput max={84} min={-84} bind:value /> Palette You can change the color palette of the NumberInput via the palette property. <script> import { NumberInput, Stack, } from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" alignment_y=\"top\" spacing=\"medium\" variation=\"wrap\" > <NumberInput span_x=\"20\" placeholder=\"This is a DEFAULT NumberInput\" /> <NumberInput palette=\"accent\" span_x=\"20\" placeholder=\"This is a ACCENT NumberInput\" /> <NumberInput palette=\"neutral\" span_x=\"20\" placeholder=\"This is a NEUTRAL NumberInput\" /> <NumberInput palette=\"dark\" span_x=\"20\" placeholder=\"This is a DARK NumberInput\" /> <NumberInput palette=\"light\" span_x=\"20\" placeholder=\"This is a LIGHT NumberInput\" /> <NumberInput palette=\"alert\" span_x=\"20\" placeholder=\"This is a ALERT NumberInput\" /> <NumberInput palette=\"affirmative\" span_x=\"20\" placeholder=\"This is a AFFIRMATIVE NumberInput\" /> <NumberInput palette=\"informative\" span_x=\"20\" placeholder=\"This is a INFORMATIVE NumberInput\" /> <NumberInput palette=\"negative\" span_x=\"20\" placeholder=\"This is a NEGATIVE NumberInput\" /> </Stack.Container> Block You can alter the NumberInput render as an opaque block via the variation property. <script> import { NumberInput, Stack, } from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" alignment_y=\"top\" spacing=\"medium\" variation=\"wrap\" > <NumberInput variation=\"block\" span_x=\"20\" placeholder=\"This is a DEFAULT NumberInput\" /> <NumberInput variation=\"block\" palette=\"accent\" span_x=\"20\" placeholder=\"This is a ACCENT NumberInput\" /> <NumberInput variation=\"block\" palette=\"dark\" span_x=\"20\" placeholder=\"This is a DARK NumberInput\" /> <NumberInput variation=\"block\" palette=\"light\" span_x=\"20\" placeholder=\"This is a LIGHT NumberInput\" /> <NumberInput variation=\"block\" palette=\"alert\" span_x=\"20\" placeholder=\"This is a ALERT NumberInput\" /> <NumberInput variation=\"block\" palette=\"affirmative\" span_x=\"20\" placeholder=\"This is a AFFIRMATIVE NumberInput\" /> <NumberInput variation=\"block\" palette=\"negative\" span_x=\"20\" placeholder=\"This is a NEGATIVE NumberInput\" /> </Stack.Container> Flush You can change the appearance of the NumberInput to be flush with the rest of the Application content via the variation property. <script> import {NumberInput} from \"@kahi-ui/framework\"; </script> Input some text: <NumberInput variation=\"flush\" span_x=\"20\" placeholder=\"This is a FLUSH NumberInput\" /> Sizing WARNING : This feature was renamed from size to sizing in v0.6.0 . NOTE : By passing an array, you can set responsive values . e.g. sizing={[\"tiny\", \"tablet:medium\", \"mobile:medium\"]} You can change the size of the NumberInput via the sizing property. <script> import { NumberInput, Stack, } from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" alignment_y=\"top\" spacing=\"medium\" variation=\"wrap\" > <NumberInput span_x=\"20\" placeholder=\"This is a DEFAULT NumberInput\" /> <NumberInput sizing=\"nano\" span_x=\"20\" placeholder=\"This is a NANO NumberInput\" /> <NumberInput sizing=\"tiny\" span_x=\"20\" placeholder=\"This is a TINY NumberInput\" /> <NumberInput sizing=\"small\" span_x=\"20\" placeholder=\"This is a SMALL NumberInput\" /> <NumberInput sizing=\"medium\" span_x=\"20\" placeholder=\"This is a MEDIUM NumberInput\" /> <NumberInput sizing=\"large\" span_x=\"20\" placeholder=\"This is a LARGE NumberInput\" /> <NumberInput sizing=\"huge\" span_x=\"20\" placeholder=\"This is a HUGE NumberInput\" /> <NumberInput sizing=\"massive\" span_x=\"20\" placeholder=\"This is a MASSIVE NumberInput\" /> </Stack.Container> Radius NOTE : Introduced feature in v0.6.0. NOTE : By passing an array, you can set responsive values . e.g. radius={[\"tiny\", \"tablet:medium\", \"mobile:medium\"]} You can change the border radius of the NumberInput via the radius property. <script> import { NumberInput, Stack, } from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" alignment_y=\"top\" spacing=\"medium\" variation=\"wrap\" > <NumberInput span_x=\"20\" placeholder=\"This is a DEFAULT NumberInput\" /> <NumberInput radius=\"none\" span_x=\"20\" placeholder=\"This is a NONE NumberInput\" /> <NumberInput radius=\"nano\" span_x=\"20\" placeholder=\"This is a NANO NumberInput\" /> <NumberInput radius=\"tiny\" span_x=\"20\" placeholder=\"This is a TINY NumberInput\" /> <NumberInput radius=\"small\" span_x=\"20\" placeholder=\"This is a SMALL NumberInput\" /> <NumberInput sizing=\"medium\" span_x=\"20\" placeholder=\"This is a MEDIUM NumberInput\" /> <NumberInput radius=\"large\" span_x=\"20\" placeholder=\"This is a LARGE NumberInput\" /> <NumberInput radius=\"huge\" span_x=\"20\" placeholder=\"This is a HUGE NumberInput\" /> <NumberInput radius=\"massive\" span_x=\"20\" placeholder=\"This is a MASSIVE NumberInput\" /> </Stack.Container> Shapes NOTE : Introduced feature in v0.6.0. NOTE : By passing an array, you can set responsive values . e.g. shape={[\"circle\", \"tablet:pill\", \"mobile:pill\"]} You can change the shape of the NumberInput via the shape property. <script> import { NumberInput, Stack, } from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" alignment_y=\"top\" spacing=\"medium\" variation=\"wrap\" > <NumberInput span_x=\"20\" placeholder=\"This is a DEFAULT NumberInput\" /> <NumberInput shape=\"circle\" span_x=\"20\" placeholder=\"This is a CIRCLE NumberInput\" /> <NumberInput shape=\"pill\" span_x=\"20\" placeholder=\"This is a PILL NumberInput\" /> </Stack.Container> Alignment WARNING : This feature was renamed from align to alignment_x in v0.6.0 . You can alter the alignment of the Component via the alignment_x property. <script> import { NumberInput, Stack, } from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <NumberInput placeholder=\"DEFAULT NumberInput\" span_x=\"20\" /> <NumberInput alignment_x=\"left\" placeholder=\"LEFT NumberInput\" span_x=\"20\" /> <NumberInput alignment_x=\"center\" placeholder=\"CENTER NumberInput\" span_x=\"20\" /> <NumberInput alignment_x=\"right\" placeholder=\"RIGHT NumberInput\" span_x=\"20\" /> <NumberInput alignment_x=\"justify\" placeholder=\"JUSTIFY NumberInput\" span_x=\"20\" /> </Stack.Container> Placeholder You can set the NumberInput to show placeholder text whenever there is no current value. <script> import {NumberInput} from \"@kahi-ui/framework\"; </script> <NumberInput placeholder=\"...enter a number\" /> Span X WARNING : This feature was renamed from characters to span_x in v0.6.0 . You can set how wide your NumberInput to an approximation of character width via the span_x property. <script> import {NumberInput} from \"@kahi-ui/framework\"; </script> <NumberInput span_x=\"2\" /> "},{"identifier":"/docs/interactables/radio","title":"Radio","text":"Radio NOTE : Introduced feature in v0.2.7. Radio is typically used to present a set of mutually-exclusive options to the end-user, which they can then choose from. <script> import { Form, Radio, Stack, Text, } from \"@kahi-ui/framework\"; let logic_state = \"vanilla\"; </script> <Text is=\"strong\"> Select an Ice Cream Flavor <Text is=\"sup\">{logic_state}</Text> </Text> <Stack.Container spacing=\"small\" margin_top=\"small\"> <Form.Group logic_name=\"radio-preview\" bind:logic_state > <Radio id=\"radio-preview-bubblegum\" palette=\"accent\" sizing=\"tiny\" value=\"bubblegum\" > Bubblegum </Radio> <Radio id=\"radio-preview-chocolate\" palette=\"accent\" sizing=\"tiny\" value=\"chocolate\" > Chocolate </Radio> <Radio id=\"radio-preview-vanilla\" palette=\"accent\" sizing=\"tiny\" value=\"vanilla\" > Vanilla </Radio> </Form.Group> </Stack.Container> Imports <script> import {Radio} from \"@kahi-ui/framework\"; </script> States You can control the state of the Radio via the active, disabled, and state properties. <script> import { Radio, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div> <Text is=\"strong\">DEFAULT</Text> <br /> <Radio /> </div> <div> <Text is=\"strong\">STATE</Text> <br /> <Radio state /> </div> <div> <Text is=\"strong\">ACTIVE NO-STATE</Text> <br /> <Radio active /> </div> <div> <Text is=\"strong\">ACTIVE STATE</Text> <br /> <Radio active state /> </div> <div> <Text is=\"strong\">DISABLED NO-STATE</Text> <br /> <Radio disabled /> </div> <div> <Text is=\"strong\">DISABLED STATE</Text> <br /> <Radio disabled state /> </div> </Stack.Container> Palette You can change the color palette of the Radio via the palette property. <script> import { Form, Radio, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Form.Group logic_name=\"radio-palette\"> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div> <Text is=\"strong\">DEFAULT</Text> <br /> <Radio /> </div> <div> <Text is=\"strong\">ACCENT</Text> <br /> <Radio palette=\"accent\" /> </div> <div> <Text is=\"strong\">NEUTRAL</Text> <br /> <Radio palette=\"neutral\" /> </div> <div> <Text is=\"strong\">DARK</Text> <br /> <Radio palette=\"dark\" /> </div> <div> <Text is=\"strong\">LIGHT</Text> <br /> <Radio palette=\"light\" /> </div> <div> <Text is=\"strong\">ALERT</Text> <br /> <Radio palette=\"alert\" /> </div> <div> <Text is=\"strong\">AFFIRMATIVE</Text> <br /> <Radio palette=\"affirmative\" /> </div> <div> <Text is=\"strong\">INFORMATIVE</Text> <br /> <Radio palette=\"informative\" /> </div> <div> <Text is=\"strong\">NEGATIVE</Text> <br /> <Radio palette=\"negative\" /> </div> </Stack.Container> </Form.Group> Sizing WARNING : This feature was renamed from size to sizing in v0.6.0 . NOTE : By passing an array, you can set responsive values . e.g. sizing={[\"tiny\", \"tablet:medium\", \"mobile:medium\"]} You can change the size of the Radio via the sizing property. <script> import { Form, Radio, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Form.Group logic_name=\"radio-sizing\"> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div> <Text is=\"strong\">DEFAULT</Text> <br /> <Radio /> </div> <div> <Text is=\"strong\">NANO</Text> <br /> <Radio sizing=\"nano\" /> </div> <div> <Text is=\"strong\">TINY</Text> <br /> <Radio sizing=\"tiny\" /> </div> <div> <Text is=\"strong\">SMALL</Text> <br /> <Radio sizing=\"small\" /> </div> <div> <Text is=\"strong\">MEDIUM</Text> <br /> <Radio sizing=\"medium\" /> </div> <div> <Text is=\"strong\">LARGE</Text> <br /> <Radio sizing=\"large\" /> </div> <div> <Text is=\"strong\">HUGE</Text> <br /> <Radio sizing=\"huge\" /> </div> <div> <Text is=\"strong\">MASSIVE</Text> <br /> <Radio sizing=\"massive\" /> </div> </Stack.Container> </Form.Group> Flush NOTE : Introduced feature in v0.2.13. You can change the appearance of the Radio to be flush with the rest of the Application content via the variation property. <script> import { Form, Menu, Radio, Spacer, } from \"@kahi-ui/framework\"; </script> <Menu.Container> <Menu.Heading>Sort By</Menu.Heading> <Form.Group logic_name=\"radio-flush\" logic_state=\"ascending\" > <Menu.Label for=\"radio-flush-ascending\"> Ascending <Spacer /> <Radio value=\"ascending\" palette=\"accent\" variation=\"flush\" /> </Menu.Label> <Menu.Label for=\"radio-flush-decending\"> Decending <Spacer /> <Radio value=\"decending\" palette=\"accent\" variation=\"flush\" /> </Menu.Label> </Form.Group> </Menu.Container> "},{"identifier":"/docs/interactables/switch","title":"Switch","text":"Switch NOTE : Introduced feature in v0.2.7. Switch is typically used to present to the end-user features, settings, and other toggles that they can turn on / off. <script> import {Form, Switch} from \"@kahi-ui/framework\"; </script> <Form.Label for=\"switch-preview\"> Remember Login? <Switch palette=\"affirmative\" /> </Form.Label> Imports <script> import {Switch} from \"@kahi-ui/framework\"; </script> States You can control the state of the Switch via the active, disabled, and state properties. <script> import { Switch, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div> <Text is=\"strong\">DEFAULT</Text> <br /> <Switch /> </div> <div> <Text is=\"strong\">STATE</Text> <br /> <Switch state /> </div> <div> <Text is=\"strong\">ACTIVE NO-STATE</Text> <br /> <Switch active /> </div> <div> <Text is=\"strong\">ACTIVE STATE</Text> <br /> <Switch active state /> </div> <div> <Text is=\"strong\">DISABLED NO-STATE</Text> <br /> <Switch disabled /> </div> <div> <Text is=\"strong\">DISABLED STATE</Text> <br /> <Switch disabled state /> </div> </Stack.Container> Palette You can change the color palette of the Switch via the palette property. <script> import { Switch, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div> <Text is=\"strong\">DEFAULT</Text> <br /> <Switch /> </div> <div> <Text is=\"strong\">ACCENT</Text> <br /> <Switch palette=\"accent\" /> </div> <div> <Text is=\"strong\">NEUTRAL</Text> <br /> <Switch palette=\"neutral\" /> </div> <div> <Text is=\"strong\">DARK</Text> <br /> <Switch palette=\"dark\" /> </div> <div> <Text is=\"strong\">LIGHT</Text> <br /> <Switch palette=\"light\" /> </div> <div> <Text is=\"strong\">ALERT</Text> <br /> <Switch palette=\"alert\" /> </div> <div> <Text is=\"strong\">AFFIRMATIVE</Text> <br /> <Switch palette=\"affirmative\" /> </div> <div> <Text is=\"strong\">INFORMATIVE</Text> <br /> <Switch palette=\"informative\" /> </div> <div> <Text is=\"strong\">NEGATIVE</Text> <br /> <Switch palette=\"negative\" /> </div> </Stack.Container> Sizing WARNING : This feature was renamed from size to sizing in v0.6.0 . NOTE : By passing an array, you can set responsive values . e.g. sizing={[\"tiny\", \"tablet:medium\", \"mobile:medium\"]} You can change the size of the Switch via the sizing property. <script> import { Switch, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div> <Text is=\"strong\">DEFAULT</Text> <br /> <Switch /> </div> <div> <Text is=\"strong\">NANO</Text> <br /> <Switch sizing=\"nano\" /> </div> <div> <Text is=\"strong\">TINY</Text> <br /> <Switch sizing=\"tiny\" /> </div> <div> <Text is=\"strong\">SMALL</Text> <br /> <Switch sizing=\"small\" /> </div> <div> <Text is=\"strong\">MEDIUM</Text> <br /> <Switch sizing=\"medium\" /> </div> <div> <Text is=\"strong\">LARGE</Text> <br /> <Switch sizing=\"large\" /> </div> <div> <Text is=\"strong\">HUGE</Text> <br /> <Switch sizing=\"huge\" /> </div> <div> <Text is=\"strong\">MASSIVE</Text> <br /> <Switch sizing=\"massive\" /> </div> </Stack.Container> "},{"identifier":"/docs/interactables/textinput","title":"TextInput","text":"TextInput NOTE : Introduced feature in v0.2.7. TextInput is typically used for capturing string input from an end-user for input into forms, XHR requests, etc. <script> import { Code, Form, TextInput, } from \"@kahi-ui/framework\"; let value = \"sample@sample.org\"; </script> <Form.Control logic_id=\"textinput-preview\"> <Form.Label> Register E-Mail for Newsletter </Form.Label> <TextInput bind:value /> <Form.HelpText> Make sure to enter a valid E-Mail Address, e.g. <Code>sample@sample.org</Code> </Form.HelpText> </Form.Control> Imports <script> import {TextInput} from \"@kahi-ui/framework\"; </script> Maximum + Minimum WARNING : This feature was renamed from max_length / min_length to max / min in v0.6.0 respectively. ... TODO : snippet Input Masking NOTE : Introduced feature in v0.4.14. IMPORTANT : This feature only runs on Javascript-enabled clients, you NEED to ALWAYS validate user input on the server. You can enable input masking (dropping input that doesn't match a constraint) by enabling mask and setting the pattern properties. NOTE : The below input is masked to hexadecimal input, e.g. abcdef1234567890 <script> import {TextInput} from \"@kahi-ui/framework\"; </script> <TextInput pattern=\"[0-9a-fA-F]+\" mask /> Or by implementing custom logic via the mask event. <script> import {TextInput} from \"@kahi-ui/framework\"; const CHARACTERS_HEXADECIMAL = new Set([ \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", ]); function on_mask(event) { for (const character of event.detail.value) { if ( !CHARACTERS_HEXADECIMAL.has( character.toLowerCase() ) ) { event.preventDefault(); return; } } } </script> <TextInput mask on:mask={on_mask} /> Palette You can change the color palette of the TextInput via the palette property. <script> import { Stack, TextInput, } from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" alignment_y=\"top\" spacing=\"medium\" variation=\"wrap\" > <TextInput span_x=\"20\" value=\"This is a DEFAULT TextInput\" /> <TextInput palette=\"accent\" span_x=\"20\" value=\"This is a ACCENT TextInput\" /> <TextInput palette=\"dark\" span_x=\"20\" value=\"This is a DARK TextInput\" /> <TextInput palette=\"light\" span_x=\"20\" value=\"This is a LIGHT TextInput\" /> <TextInput palette=\"alert\" span_x=\"20\" value=\"This is a ALERT TextInput\" /> <TextInput palette=\"affirmative\" span_x=\"20\" value=\"This is a AFFIRMATIVE TextInput\" /> <TextInput palette=\"negative\" span_x=\"20\" value=\"This is a NEGATIVE TextInput\" /> </Stack.Container> Block You can alter the TextInput render as an opaque block via the variation property. <script> import { Stack, TextInput, } from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" alignment_y=\"top\" spacing=\"medium\" variation=\"wrap\" > <TextInput variation=\"block\" span_x=\"20\" value=\"This is a DEFAULT TextInput\" /> <TextInput variation=\"block\" palette=\"accent\" span_x=\"20\" value=\"This is a ACCENT TextInput\" /> <TextInput variation=\"block\" palette=\"dark\" span_x=\"20\" value=\"This is a DARK TextInput\" /> <TextInput variation=\"block\" palette=\"light\" span_x=\"20\" value=\"This is a LIGHT TextInput\" /> <TextInput variation=\"block\" palette=\"alert\" span_x=\"20\" value=\"This is a ALERT TextInput\" /> <TextInput variation=\"block\" palette=\"affirmative\" span_x=\"20\" value=\"This is a AFFIRMATIVE TextInput\" /> <TextInput variation=\"block\" palette=\"negative\" span_x=\"20\" value=\"This is a NEGATIVE TextInput\" /> </Stack.Container> Flush NOTE : Introduced feature in v0.2.16. You can change the appearance of the TextInput to be flush with the rest of the Application content via the variation property. <script> import {TextInput} from \"@kahi-ui/framework\"; </script> Input some text: <TextInput variation=\"flush\" span_x=\"20\" value=\"This is a FLUSH TextInput\" /> Sizing WARNING : This feature was renamed from size to sizing in v0.6.0 . NOTE : By passing an array, you can set responsive values . e.g. sizing={[\"tiny\", \"tablet:medium\", \"mobile:medium\"]} You can change the size of the TextInput via the sizing property. <script> import { Stack, TextInput, } from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" alignment_y=\"top\" spacing=\"medium\" variation=\"wrap\" > <TextInput span_x=\"20\" value=\"This is a DEFAULT TextInput\" /> <TextInput sizing=\"nano\" span_x=\"20\" value=\"This is a NANO TextInput\" /> <TextInput sizing=\"tiny\" span_x=\"20\" value=\"This is a TINY TextInput\" /> <TextInput sizing=\"small\" span_x=\"20\" value=\"This is a SMALL TextInput\" /> <TextInput sizing=\"medium\" span_x=\"20\" value=\"This is a MEDIUM TextInput\" /> <TextInput sizing=\"large\" span_x=\"20\" value=\"This is a LARGE TextInput\" /> <TextInput sizing=\"huge\" span_x=\"20\" value=\"This is a HUGE TextInput\" /> <TextInput sizing=\"massive\" span_x=\"20\" value=\"This is a MASSIVE TextInput\" /> </Stack.Container> Radius NOTE : Introduced feature in v0.6.0. NOTE : By passing an array, you can set responsive values . e.g. radius={[\"tiny\", \"tablet:medium\", \"mobile:medium\"]} You can change the border radius of the TextInput via the radius property. <script> import { Stack, TextInput, } from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" alignment_y=\"top\" spacing=\"medium\" variation=\"wrap\" > <TextInput span_x=\"20\" value=\"This is a DEFAULT TextInput\" /> <TextInput radius=\"none\" span_x=\"20\" value=\"This is a NONE TextInput\" /> <TextInput radius=\"nano\" span_x=\"20\" value=\"This is a NANO TextInput\" /> <TextInput radius=\"tiny\" span_x=\"20\" value=\"This is a TINY TextInput\" /> <TextInput radius=\"small\" span_x=\"20\" value=\"This is a SMALL TextInput\" /> <TextInput radius=\"medium\" span_x=\"20\" value=\"This is a MEDIUM TextInput\" /> <TextInput sizing=\"large\" span_x=\"20\" value=\"This is a LARGE TextInput\" /> <TextInput radius=\"huge\" span_x=\"20\" value=\"This is a HUGE TextInput\" /> <TextInput radius=\"massive\" span_x=\"20\" value=\"This is a MASSIVE TextInput\" /> </Stack.Container> Shapes NOTE : Introduced feature in v0.6.0. NOTE : By passing an array, you can set responsive values . e.g. shape={[\"circle\", \"tablet:pill\", \"mobile:pill\"]} You can change the shape of the TextInput via the shape property. <script> import { Stack, TextInput, } from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" alignment_y=\"top\" spacing=\"medium\" variation=\"wrap\" > <TextInput span_x=\"20\" value=\"This is a DEFAULT TextInput\" /> <TextInput shape=\"nano\" span_x=\"20\" value=\"This is a CIRCLE TextInput\" /> <TextInput shape=\"pill\" span_x=\"20\" value=\"This is a PILL TextInput\" /> </Stack.Container> Types You can change your input type between email, password, search, text (DEFAULT) , url via the type property. <script> import { Stack, TextInput, } from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" alignment_y=\"top\" spacing=\"medium\" variation=\"wrap\" > <TextInput type=\"email\" span_x=\"20\" value=\"sample@sample.org\" /> <TextInput type=\"password\" span_x=\"20\" value=\"abcdef1002\" /> <TextInput type=\"url\" span_x=\"20\" value=\"https://google.com\" /> </Stack.Container> TextArea You can have the TextInput render as a <textarea> via the is property. <script> import {TextInput} from \"@kahi-ui/framework\"; </script> <TextInput is=\"textarea\" value=\"This is a TextArea TextInput\" /> Alignment WARNING : This feature was renamed from align to alignment_x in v0.6.0 . You can alter the alignment of the Component via the alignment_x property. <script> import { TextInput, Stack, } from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <TextInput value=\"DEFAULT TextInput\" span_x=\"20\" /> <TextInput alignment_x=\"left\" value=\"LEFT TextInput\" span_x=\"20\" /> <TextInput alignment_x=\"center\" value=\"CENTER TextInput\" span_x=\"20\" /> <TextInput alignment_x=\"right\" value=\"RIGHT TextInput\" span_x=\"20\" /> <TextInput alignment_x=\"justify\" value=\"JUSTIFY TextInput\" span_x=\"20\" /> </Stack.Container> Placeholder You can set the TextInput to show placeholder text whenever there is no current value. <script> import {TextInput} from \"@kahi-ui/framework\"; </script> <TextInput placeholder=\"...enter some text\" /> Span X + Y WARNING : This feature was renamed from characters / lines to span_x / span_y in v0.6.0 respectively. You can set how wide your TextInput to an approximation of character width and new lines via the span_x and span_y properties respectively. <script> import {TextInput} from \"@kahi-ui/framework\"; </script> <TextInput value=\"This input should be about 4 characters wide.\" span_x=\"4\" /> <TextInput is=\"textarea\" value=\"This input should be about 3 lines tall.\" span_y=\"3\" /> Resizable TextArea You alter the a <textarea> based TextInput to resizable both axis true, horizontally x, or vertically y via the resizable property. <script> import {TextInput} from \"@kahi-ui/framework\"; </script> <TextInput is=\"textarea\" value=\"This is a resizable TextArea\" resizable /> "},{"identifier":"/docs/layouts/article","title":"Article","text":"Article NOTE : Introduced feature in v0.6.0. Article is typically used to wrap Markdown and other plaintext format outputs to support styling semantic elements as their Kahi UI Component counterparts, with standardized spacing. Imports <script> import {Article} from \"@kahi-ui/framework\"; </script> Anchor Via the <a> HTML tag, you can render links with hover effects and emphasis coloring. <script> import {Article} from \"@kahi-ui/framework\"; </script> <Article> <a href=\"https://google.com\">Goto google.com</a> <p> This has nested <a href=\"#\">anchor tags</a>! </p> <blockquote> <p> This has nested <a href=\"#\">anchor tags</a >! </p> </blockquote> <ul> <li> This has nested <a href=\"#\">anchor tags</a >! </li> </ul> </Article> Blockquote Via the <blockquote> and <cite> HTML tags, you can present formatted quotes. <script> import {Article} from \"@kahi-ui/framework\"; </script> <Article max_width=\"prose\" margin_x=\"auto\" margin_y=\"medium\" > <blockquote> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris porta, urna vel tristique varius, ipsum erat auctor odio, id imperdiet mauris velit eget quam. Donec viverra urna eu ligula eleifend, sed molestie lectus convallis. Nullam gravida placerat ex, sodales porttitor nibh. Suspendisse vitae nisi euismod, venenatis dui eu, hendrerit risus. Maecenas at hendrerit odio, at dictum nulla. Morbi tristique, augue vel blandit bibendum, mauris nibh finibus justo, ut mollis magna neque in lectus. Sed dignissim, enim sit amet lobortis tincidunt, nibh risus elementum urna, vel tincidunt nisi elit vel tortor. Curabitur iaculis nulla nec odio efficitur, sit amet auctor odio mattis. Aenean quam arcu, feugiat non turpis eget, aliquet vestibulum lacus. </p> <p> Praesent lacinia elit et risus molestie pretium. Aenean semper mauris ut erat ornare lobortis. Integer sollicitudin bibendum rhoncus. Nulla nisi orci, maximus elementum libero ut, tristique scelerisque sapien. Aenean ultricies dui quis finibus pretium. Nunc tellus neque, cursus et egestas vel, elementum sit amet lacus. Aenean ac euismod nunc, id molestie eros. </p> <cite>— Lorem Ipsum</cite> </blockquote> </Article> Code Via the <code> HTML tag or <pre><code> HTML tag pair, you can wrap chunks of code to be smaller and given a background. <!-- prettier-ignore --> <script> import {Article} from \"@kahi-ui/framework\"; </script> <Article> <code>import * as Kahi from \"@kahi-ui/framework\";</code> <br /> <br /> <pre>import math from \"a-math-library\"; const result = math.add(1, 1); console.log(\"Our value is:\", result);</pre> <code>import * as Kahi from \"@kahi-ui/framework\";</code> <p> This has nested <code>code tags</code>! </p> <blockquote> <p> This has nested <code>code tags</code>! </p> </blockquote> <ul> <li> This has nested <code>code tags</code>! </li> </ul> </Article> Divider Via the <hr> HTML tag, you can break sections of content with a horizontal line. <script> import {Article} from \"@kahi-ui/framework\"; </script> <Article> <hr /> </Article> Embedded TODO : implementation ... Heading Via the <h1>, <h2>, <h3>, <h4>, <h5>, and <h6> HTML tag, you can wrap text to have header sizing. <script> import {Article} from \"@kahi-ui/framework\"; </script> <Article> <h1>Heading 1</h1> <h2>Heading 2</h2> <h3>Heading 3</h3> <h4>Heading 4</h4> <h5>Heading 5</h5> <h6>Heading 6</h6> </Article> List Via the <ol>, <li>, and <ul> HTML tags, you can create formatted lists. <script> import {Article} from \"@kahi-ui/framework\"; </script> <Article> <ol> <li>List Item #1</li> <li>List Item #2</li> <li>List Item #3</li> </ol> <ul> <li>List Item #1</li> <li>List Item #2</li> <li>List Item #3</li> </ul> </Article> Paragraph Via the <p> HTML tag, you can wrap paragraphs of text with bottom margin for formatting. <script> import {Article} from \"@kahi-ui/framework\"; </script> <Article> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris porta, urna vel tristique varius, ipsum erat auctor odio, id imperdiet mauris velit eget quam. Donec viverra urna eu ligula eleifend, sed molestie lectus convallis. Nullam gravida placerat ex, sodales porttitor nibh. Suspendisse vitae nisi euismod, venenatis dui eu, hendrerit risus. Maecenas at hendrerit odio, at dictum nulla. Morbi tristique, augue vel blandit bibendum, mauris nibh finibus justo, ut mollis magna neque in lectus. Sed dignissim, enim sit amet lobortis tincidunt, nibh risus elementum urna, vel tincidunt nisi elit vel tortor. Curabitur iaculis nulla nec odio efficitur, sit amet auctor odio mattis. Aenean quam arcu, feugiat non turpis eget, aliquet vestibulum lacus. </p> <p> Praesent lacinia elit et risus molestie pretium. Aenean semper mauris ut erat ornare lobortis. Integer sollicitudin bibendum rhoncus. Nulla nisi orci, maximus elementum libero ut, tristique scelerisque sapien. Aenean ultricies dui quis finibus pretium. Nunc tellus neque, cursus et egestas vel, elementum sit amet lacus. Aenean ac euismod nunc, id molestie eros. </p> </Article> Small Via the <small> HTML tag, you can render text smaller than the current font size and have it blend more with the background. <script> import {Article} from \"@kahi-ui/framework\"; </script> <Article> <small>I am small text!</small> </Article> Table Via the <table> HTML tag, you can render out tabular data with semantic elements. <script> import { Article, Scrollable, } from \"@kahi-ui/framework\"; </script> <Article> <table> <thead> <tr> <th /> <th>Minimum</th> <th>Maximum</th> </tr> </thead> <tbody> <tr> <td> <strong>mobile</strong> </td> <td> <code>0px</code> </td> <td> <code>640px</code> </td> </tr> <tr> <td> <strong>tablet</strong> </td> <td> <code>641px</code> </td> <td> <code>768px</code> </td> </tr> <tr> <td> <strong>desktop</strong> </td> <td> <code>769px</code> </td> <td> <code>1024px</code> </td> </tr> <tr> <td> <strong>widescreen</strong> </td> <td> <code>1025px</code> </td> <td><code>∞</code></td> </tr> </tbody> <tfoot> <tr> <th /> <th>Minimum</th> <th>Maximum</th> </tr> </tfoot> </table> <table data-variation=\"borders stripes\"> <thead> <tr> <th /> <th>Minimum</th> <th>Maximum</th> </tr> </thead> <tbody> <tr> <td> <strong>mobile</strong> </td> <td> <code>0px</code> </td> <td> <code>640px</code> </td> </tr> <tr> <td> <strong>tablet</strong> </td> <td> <code>641px</code> </td> <td> <code>768px</code> </td> </tr> <tr> <td> <strong>desktop</strong> </td> <td> <code>769px</code> </td> <td> <code>1024px</code> </td> </tr> <tr> <td> <strong>widescreen</strong> </td> <td> <code>1025px</code> </td> <td><code>∞</code></td> </tr> </tbody> <tfoot> <tr> <th /> <th>Minimum</th> <th>Maximum</th> </tr> </tfoot> </table> <Scrollable width=\"medium\"> <table> <thead> <tr> <th /> <th>Minimum</th> <th>Maximum</th> </tr> </thead> <tbody> <tr> <td> <strong>mobile</strong> </td> <td> <code>0px</code> </td> <td> <code>640px</code> </td> </tr> <tr> <td> <strong>tablet</strong> </td> <td> <code>641px</code> </td> <td> <code>768px</code> </td> </tr> <tr> <td> <strong>desktop</strong> </td> <td> <code>769px</code> </td> <td> <code>1024px</code> </td> </tr> <tr> <td> <strong>widescreen</strong> </td> <td> <code>1025px</code> </td> <td><code>∞</code></td> </tr> </tbody> <tfoot> <tr> <th /> <th>Minimum</th> <th>Maximum</th> </tr> </tfoot> </table> </Scrollable> <Scrollable width=\"medium\"> <table data-variation=\"borders stripes\"> <thead> <tr> <th /> <th>Minimum</th> <th>Maximum</th> </tr> </thead> <tbody> <tr> <td> <strong>mobile</strong> </td> <td> <code>0px</code> </td> <td> <code>640px</code> </td> </tr> <tr> <td> <strong>tablet</strong> </td> <td> <code>641px</code> </td> <td> <code>768px</code> </td> </tr> <tr> <td> <strong>desktop</strong> </td> <td> <code>769px</code> </td> <td> <code>1024px</code> </td> </tr> <tr> <td> <strong>widescreen</strong> </td> <td> <code>1025px</code> </td> <td><code>∞</code></td> </tr> </tbody> <tfoot> <tr> <th /> <th>Minimum</th> <th>Maximum</th> </tr> </tfoot> </table> </Scrollable> </Article> Elements You can change the HTML tag rendered to DOM via the is property. <script> import { Article, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container spacing=\"medium\"> <Article is=\"article\"> <h1>ARTICLE</h1> </Article> <Article is=\"div\"> <h1>DIV</h1> </Article> <Article is=\"main\"> <h1>MAIN</h1> </Article> </Stack.Container> "},{"identifier":"/docs/layouts/center","title":"Center","text":"Center NOTE : Introduced feature in v0.4.2. Center is a layout primitive used to quickly center the child content within its self. <script> import {Box, Center} from \"@kahi-ui/framework\"; </script> <Box palette=\"inverse\"> <Center class=\"center-preview\"> This text is centered! </Center> </Box> <style> :global(.center-preview) { height: 100px; } </style> Imports <script> import {Center} from \"@kahi-ui/framework\"; </script> "},{"identifier":"/docs/layouts/container","title":"Container","text":"Container NOTE : Introduced feature in v0.2.0. WARNING : This feature received a breaking change in v0.6.0 . Container is a layout primitive used to typically constrain chunks of content to a max width or parent width, and centered horizontally with padding. By default it sets the max width to 65 characters. <script> import {Container, Text} from \"@kahi-ui/framework\"; </script> <Container> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </Container> Imports <script> import {Container} from \"@kahi-ui/framework\"; </script> Elements NOTE : Introduced feature <Container is=\"article\"> in v0.6.0. You can change the HTML tag rendered to DOM via the is property. <script> import { Container, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container spacing=\"medium\"> <Container is=\"article\"> <Text is=\"strong\">ARTICLE</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </Container> <Container is=\"div\"> <Text is=\"strong\">DIV</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </Container> <Container is=\"main\"> <Text is=\"strong\">MAIN</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </Container> </Stack.Container> "},{"identifier":"/docs/layouts/divider","title":"Divider","text":"Divider NOTE : Introduced feature in v0.2.0. Divider is typically used to visually separate content for easier reading comprehension. <script> import {Divider} from \"@kahi-ui/framework\"; </script> <Divider /> Imports <script> import {Divider} from \"@kahi-ui/framework\"; </script> Palette You can change the color palette of the Divider via the palette property. <script> import { Divider, Mosaic, Text, } from \"@kahi-ui/framework\"; </script> <Mosaic.Container sizing=\"medium\" spacing=\"medium\"> <div> <Text is=\"strong\">DEFAULT</Text> <Divider /> </div> <div> <Text is=\"strong\">ACCENT</Text> <Divider palette=\"accent\" /> </div> <div> <Text is=\"strong\">NEUTRAL</Text> <Divider palette=\"neutral\" /> </div> <div> <Text is=\"strong\">DARK</Text> <Divider palette=\"dark\" /> </div> <div> <Text is=\"strong\">LIGHT</Text> <Divider palette=\"light\" /> </div> <div> <Text is=\"strong\">ALERT</Text> <Divider palette=\"alert\" /> </div> <div> <Text is=\"strong\">AFFIRMATIVE</Text> <Divider palette=\"affirmative\" /> </div> <div> <Text is=\"strong\">INFORMATIVE</Text> <Divider palette=\"informative\" /> </div> <div> <Text is=\"strong\">NEGATIVE</Text> <Divider palette=\"negative\" /> </div> </Mosaic.Container> Orientation You can set the Divider to render vertically via the orientation property. <script> import { Box, Divider, Mosaic, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container class=\"divider-orientation\" orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div> <Text is=\"strong\">DEFAULT</Text> <Box palette=\"dark\" padding=\"small\"> <Divider /> </Box> </div> <div> <Text is=\"strong\">VERTICAL</Text> <Box palette=\"dark\" padding=\"small\" width=\"content-min\" > <Divider orientation=\"vertical\" /> </Box> </div> </Stack.Container> <style> :global(.divider-orientation > div:first-child > .box) { display: flex; align-items: center; height: 2rem; width: 6rem; } :global(.divider-orientation > div:last-child > .box) { height: 6rem; } </style> Text Divider components can also render text within their separators via passing content into the default slot. <script> import { Box, Divider, Mosaic, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container class=\"divider-text\" orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div> <Box palette=\"dark\" padding=\"small\"> <Divider>DEFAULT</Divider> </Box> </div> <div> <Box palette=\"dark\" padding=\"small\"> <Divider orientation=\"vertical\"> VERTICAL </Divider> </Box> </div> </Stack.Container> <style> :global(.divider-text > div:first-child > .box) { width: 12rem; } :global(.divider-text > div:last-child > .box) { display: flex; justify-content: center; width: 3rem; height: 12rem; } </style> "},{"identifier":"/docs/layouts/grid","title":"Grid","text":"Grid NOTE : Introduced feature in v0.2.0. Grid is a multi-part layout pattern for setting up a grid of items organized to a 12-point system. USAGE : REPL does not support viewport values, resize your Browser to observe this feature. <script> import {Box, Grid} from \"@kahi-ui/framework\"; </script> <Grid.Container class=\"grid-preview\" points={[\"6\", \"mobile:3\", \"tablet:4\", \"desktop:5\"]} spacing=\"medium\" > <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> </Grid.Container> <style> :global(.grid-preview .box) { height: 3rem; } </style> Imports <script> import {Grid} from \"@kahi-ui/framework\"; const {Container, Item} = Grid; </script> Points NOTE : By passing an array, you can set responsive values . e.g. points={[\"7\", \"tablet:6\", \"mobile:5\"]} You can adjust how many points the Grid.Container items are divided by via the points property. <script> import { Box, Grid, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container class=\"grid-points\" orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div> <Text is=\"strong\">12</Text> <Box palette=\"inverse\" padding=\"small\"> <Grid.Container points=\"12\" spacing=\"medium\" > <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> </Grid.Container> </Box> </div> <div> <Text is=\"strong\">11</Text> <Box palette=\"inverse\" padding=\"small\"> <Grid.Container points=\"11\" spacing=\"medium\" > <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> </Grid.Container> </Box> </div> <div> <Text is=\"strong\">10</Text> <Box palette=\"inverse\" padding=\"small\"> <Grid.Container points=\"10\" spacing=\"medium\" > <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> </Grid.Container> </Box> </div> <div> <Text is=\"strong\">9</Text> <Box palette=\"inverse\" padding=\"small\"> <Grid.Container points=\"9\" spacing=\"medium\" > <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> </Grid.Container> </Box> </div> <div> <Text is=\"strong\">8</Text> <Box palette=\"inverse\" padding=\"small\"> <Grid.Container points=\"8\" spacing=\"medium\" > <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> </Grid.Container> </Box> </div> <div> <Text is=\"strong\">7</Text> <Box palette=\"inverse\" padding=\"small\"> <Grid.Container points=\"7\" spacing=\"medium\" > <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> </Grid.Container> </Box> </div> <div> <Text is=\"strong\">6</Text> <Box palette=\"inverse\" padding=\"small\"> <Grid.Container points=\"6\" spacing=\"medium\" > <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> </Grid.Container> </Box> </div> <div> <Text is=\"strong\">5</Text> <Box palette=\"inverse\" padding=\"small\"> <Grid.Container points=\"5\" spacing=\"medium\" > <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> </Grid.Container> </Box> </div> <div> <Text is=\"strong\">4</Text> <Box palette=\"inverse\" padding=\"small\"> <Grid.Container points=\"4\" spacing=\"medium\" > <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> </Grid.Container> </Box> </div> <div> <Text is=\"strong\">3</Text> <Box palette=\"inverse\" padding=\"small\"> <Grid.Container points=\"3\" spacing=\"medium\" > <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> </Grid.Container> </Box> </div> <div> <Text is=\"strong\">2</Text> <Box palette=\"inverse\" padding=\"small\"> <Grid.Container points=\"2\" spacing=\"medium\" > <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> </Grid.Container> </Box> </div> <div> <Text is=\"strong\">1</Text> <Box palette=\"inverse\" padding=\"small\"> <Grid.Container points=\"1\" spacing=\"medium\" > <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> </Grid.Container> </Box> </div> </Stack.Container> <style> :global(.grid-points .grid) { width: 14rem; } :global(.grid-points .grid .box) { height: 3rem; } </style> Spacing NOTE : By passing an array, you can set responsive values . e.g. spacing={[\"medium\", \"tablet:small\", \"mobile:tiny\"]} You can adjust the spacing between items via the spacing, spacing_x, and spacing_y properties. <script> import { Box, Grid, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container class=\"grid-spacing\" orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div> <Text is=\"strong\">DEFAULT</Text> <Box palette=\"inverse\" padding=\"small\"> <Grid.Container points=\"3\"> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> </Grid.Container> </Box> </div> <div> <Text is=\"strong\">TINY</Text> <Box palette=\"inverse\" padding=\"small\"> <Grid.Container points=\"3\" spacing=\"tiny\"> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> </Grid.Container> </Box> </div> <div> <Text is=\"strong\">SMALL</Text> <Box palette=\"inverse\" padding=\"small\"> <Grid.Container points=\"3\" spacing=\"small\"> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> </Grid.Container> </Box> </div> <div> <Text is=\"strong\">MEDIUM</Text> <Box palette=\"inverse\" padding=\"small\"> <Grid.Container points=\"3\" spacing=\"medium\" > <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> </Grid.Container> </Box> </div> <div> <Text is=\"strong\">LARGE</Text> <Box palette=\"inverse\" padding=\"small\"> <Grid.Container points=\"3\" spacing=\"large\"> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> </Grid.Container> </Box> </div> <div> <Text is=\"strong\">HUGE</Text> <Box palette=\"inverse\" padding=\"small\"> <Grid.Container points=\"3\" spacing=\"huge\"> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> </Grid.Container> </Box> </div> </Stack.Container> <style> :global(.grid-spacing .grid) { width: 12rem; } :global(.grid-spacing .grid .box) { height: 3rem; } </style> Item Span NOTE : Introduced feature in v0.2.10. NOTE : By passing an array, you can set responsive values . e.g. span={[\"3\", \"tablet:2\", \"mobile:1\"]} You can adjust grid span of individual items via the span, span_x, span_y properties, by wrapping the items in Grid.Item. <script> import {Box, Grid} from \"@kahi-ui/framework\"; </script> <Grid.Container class=\"grid-item-span\" points={[\"4\", \"mobile:2\"]} spacing=\"medium\" > <Box palette=\"alert\" /> <Grid.Item span_x={[\"2\", \"mobile:1\"]} span_y={[\"1\", \"mobile:2\"]} > <Box palette=\"affirmative\" /> </Grid.Item> <Box palette=\"negative\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> </Grid.Container> <style> :global(.grid-item-span > *) { min-height: 3rem; } </style> "},{"identifier":"/docs/layouts/group","title":"Group","text":"Group NOTE : Introduced feature in v0.2.0. Group is a layout primitive used for grouping together like Components with their inner border radii removed. <script> import {Button, Group} from \"@kahi-ui/framework\"; </script> <Group> <Button>Button 1</Button> <Button>Button 2</Button> <Button>Button 3</Button> </Group> Imports <script> import {Group} from \"@kahi-ui/framework\"; </script> Orientation You can set the Group to render its children Components vertically, via the orientation property. <script> import { Button, Box, Group, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div> <Text is=\"strong\">DEFAULT</Text> <Box palette=\"inverse\" padding=\"small\"> <Group> <Button>Button 1</Button> <Button>Button 2</Button> <Button>Button 3</Button> </Group> </Box> </div> <div> <Text is=\"strong\">VERTICAL</Text> <Box palette=\"inverse\" padding=\"small\"> <Group orientation=\"vertical\"> <Button>Button 1</Button> <Button>Button 2</Button> <Button>Button 3</Button> </Group> </Box> </div> </Stack.Container> Stacked You can set the variation property to stacked to visually stack children Components, like avatar stacks. <!-- TODO: Two more _different_ avatars, would probably look nicer without ones that would blend into each other --> <script> import { Center, Figure, Group, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div> <Text is=\"strong\">DEFAULT</Text> <br /> <Group variation=\"stacked\"> <Figure size=\"icon-medium\" shape=\"circle\"> <img src={IMAGE_AVATAR} /> </Figure> <Figure size=\"icon-medium\" shape=\"circle\"> <img src={IMAGE_AVATAR} /> </Figure> <Figure size=\"icon-medium\" shape=\"circle\"> <img src={IMAGE_AVATAR} /> </Figure> <Center padding_left=\"small\"> <Text is=\"small\">+7</Text> </Center> </Group> </div> <div> <Text is=\"strong\">VERTICAL</Text> <br /> <Group variation=\"stacked\" orientation=\"vertical\" > <Figure size=\"icon-medium\" shape=\"circle\"> <img src={IMAGE_AVATAR} /> </Figure> <Figure size=\"icon-medium\" shape=\"circle\"> <img src={IMAGE_AVATAR} /> </Figure> <Figure size=\"icon-medium\" shape=\"circle\"> <img src={IMAGE_AVATAR} /> </Figure> <Center padding_top=\"small\"> <Text is=\"small\">+7</Text> </Center> </Group> </div> </Stack.Container> Spacing NOTE : Introduced feature in v0.6.0. When the variation property is set to stacked, you can control the negative spacing via the spacing, spacing_x, and spacing_y properties. <script> import { Center, Figure, Group, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container spacing=\"medium\"> <div> <Text is=\"strong\">DEFAULT</Text> <br /> <Group variation=\"stacked\"> <Figure size=\"icon-medium\" shape=\"circle\"> <img src={IMAGE_AVATAR} /> </Figure> <Figure size=\"icon-medium\" shape=\"circle\"> <img src={IMAGE_AVATAR} /> </Figure> <Figure size=\"icon-medium\" shape=\"circle\"> <img src={IMAGE_AVATAR} /> </Figure> <Center padding_left=\"small\"> <Text is=\"small\">+7</Text> </Center> </Group> </div> <div> <Text is=\"strong\">NANO</Text> <br /> <Group variation=\"stacked\" spacing=\"nano\"> <Figure size=\"icon-medium\" shape=\"circle\"> <img src={IMAGE_AVATAR} /> </Figure> <Figure size=\"icon-medium\" shape=\"circle\"> <img src={IMAGE_AVATAR} /> </Figure> <Figure size=\"icon-medium\" shape=\"circle\"> <img src={IMAGE_AVATAR} /> </Figure> <Center padding_left=\"small\"> <Text is=\"small\">+7</Text> </Center> </Group> </div> <div> <Text is=\"strong\">TINY</Text> <br /> <Group variation=\"stacked\" spacing=\"tiny\"> <Figure size=\"icon-medium\" shape=\"circle\"> <img src={IMAGE_AVATAR} /> </Figure> <Figure size=\"icon-medium\" shape=\"circle\"> <img src={IMAGE_AVATAR} /> </Figure> <Figure size=\"icon-medium\" shape=\"circle\"> <img src={IMAGE_AVATAR} /> </Figure> <Center padding_left=\"small\"> <Text is=\"small\">+7</Text> </Center> </Group> </div> <div> <Text is=\"strong\">SMALL</Text> <br /> <Group variation=\"stacked\" spacing=\"small\"> <Figure size=\"icon-medium\" shape=\"circle\"> <img src={IMAGE_AVATAR} /> </Figure> <Figure size=\"icon-medium\" shape=\"circle\"> <img src={IMAGE_AVATAR} /> </Figure> <Figure size=\"icon-medium\" shape=\"circle\"> <img src={IMAGE_AVATAR} /> </Figure> <Center padding_left=\"small\"> <Text is=\"small\">+7</Text> </Center> </Group> </div> <div> <Text is=\"strong\">MEDIUM</Text> <br /> <Group variation=\"stacked\" spacing=\"medium\"> <Figure size=\"icon-medium\" shape=\"circle\"> <img src={IMAGE_AVATAR} /> </Figure> <Figure size=\"icon-medium\" shape=\"circle\"> <img src={IMAGE_AVATAR} /> </Figure> <Figure size=\"icon-medium\" shape=\"circle\"> <img src={IMAGE_AVATAR} /> </Figure> <Center padding_left=\"small\"> <Text is=\"small\">+7</Text> </Center> </Group> </div> <div> <Text is=\"strong\">LARGE</Text> <br /> <Group variation=\"stacked\" spacing=\"large\"> <Figure size=\"icon-medium\" shape=\"circle\"> <img src={IMAGE_AVATAR} /> </Figure> <Figure size=\"icon-medium\" shape=\"circle\"> <img src={IMAGE_AVATAR} /> </Figure> <Figure size=\"icon-medium\" shape=\"circle\"> <img src={IMAGE_AVATAR} /> </Figure> <Center padding_left=\"small\"> <Text is=\"small\">+7</Text> </Center> </Group> </div> <div> <Text is=\"strong\">HUGE</Text> <br /> <Group variation=\"stacked\" spacing=\"huge\"> <Figure size=\"icon-medium\" shape=\"circle\"> <img src={IMAGE_AVATAR} /> </Figure> <Figure size=\"icon-medium\" shape=\"circle\"> <img src={IMAGE_AVATAR} /> </Figure> <Figure size=\"icon-medium\" shape=\"circle\"> <img src={IMAGE_AVATAR} /> </Figure> <Center padding_left=\"small\"> <Text is=\"small\">+7</Text> </Center> </Group> </div> <div> <Text is=\"strong\">MASSIVE</Text> <br /> <Group variation=\"stacked\" spacing=\"massive\"> <Figure size=\"icon-medium\" shape=\"circle\"> <img src={IMAGE_AVATAR} /> </Figure> <Figure size=\"icon-medium\" shape=\"circle\"> <img src={IMAGE_AVATAR} /> </Figure> <Figure size=\"icon-medium\" shape=\"circle\"> <img src={IMAGE_AVATAR} /> </Figure> <Center padding_left=\"small\"> <Text is=\"small\">+7</Text> </Center> </Group> </div> </Stack.Container> "},{"identifier":"/docs/layouts/mosaic","title":"Mosaic","text":"Mosaic NOTE : Introduced feature in v0.2.0. WARNING : This feature was renamed from <Mosaic> to <Mosaic.Container> in v0.6.0 . Mosaic is a layout primitive for setting up a mosaic of items organized to displaying as many child items at a certain size as possible. <script> import {Box, Mosaic} from \"@kahi-ui/framework\"; </script> <Mosaic.Container sizing=\"tiny\" spacing=\"medium\"> <Box palette=\"alert\" height=\"icon-massive\" /> <Box palette=\"affirmative\" height=\"icon-massive\" /> <Box palette=\"negative\" height=\"icon-massive\" /> <Box palette=\"affirmative\" height=\"icon-massive\" /> <Box palette=\"negative\" height=\"icon-massive\" /> <Box palette=\"alert\" height=\"icon-massive\" /> <Box palette=\"alert\" height=\"icon-massive\" /> <Box palette=\"affirmative\" height=\"icon-massive\" /> <Box palette=\"negative\" height=\"icon-massive\" /> <Box palette=\"negative\" height=\"icon-massive\" /> <Box palette=\"alert\" height=\"icon-massive\" /> <Box palette=\"affirmative\" height=\"icon-massive\" /> <Box palette=\"affirmative\" height=\"icon-massive\" /> <Box palette=\"negative\" height=\"icon-massive\" /> <Box palette=\"alert\" height=\"icon-massive\" /> </Mosaic.Container> Imports <script> import {Mosaic} from \"@kahi-ui/framework\"; const {Container, Item} = Mosaic; </script> Sizing NOTE : By passing an array, you can set responsive values . e.g. sizing={[\"tiny\", \"tablet:medium\", \"mobile:medium\"]} You can alter how large each Mosaic item should be via the sizing property. <script> import { Box, Mosaic, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div> <Text is=\"strong\">NANO</Text> <Box palette=\"inverse\" padding=\"small\"> <Mosaic.Container sizing=\"nano\" spacing=\"medium\" > <Box palette=\"alert\" height=\"icon-massive\" /> <Box palette=\"affirmative\" height=\"icon-massive\" /> <Box palette=\"negative\" height=\"icon-massive\" /> </Mosaic.Container> </Box> </div> <div> <Text is=\"strong\">TINY</Text> <Box palette=\"inverse\" padding=\"small\"> <Mosaic.Container sizing=\"tiny\" spacing=\"medium\" > <Box palette=\"alert\" height=\"icon-massive\" /> <Box palette=\"affirmative\" height=\"icon-massive\" /> <Box palette=\"negative\" height=\"icon-massive\" /> </Mosaic.Container> </Box> </div> <div> <Text is=\"strong\">SMALL</Text> <Box palette=\"inverse\" padding=\"small\"> <Mosaic.Container sizing=\"small\" spacing=\"medium\" > <Box palette=\"alert\" height=\"icon-massive\" /> <Box palette=\"affirmative\" height=\"icon-massive\" /> <Box palette=\"negative\" height=\"icon-massive\" /> </Mosaic.Container> </Box> </div> <div> <Text is=\"strong\">MEDIUM</Text> <Box palette=\"inverse\" padding=\"small\"> <Mosaic.Container sizing=\"medium\" spacing=\"medium\" > <Box palette=\"alert\" height=\"icon-massive\" /> <Box palette=\"affirmative\" height=\"icon-massive\" /> <Box palette=\"negative\" height=\"icon-massive\" /> </Mosaic.Container> </Box> </div> <div> <Text is=\"strong\">LARGE</Text> <Box palette=\"inverse\" padding=\"small\"> <Mosaic.Container sizing=\"large\" spacing=\"medium\" > <Box palette=\"alert\" height=\"icon-massive\" /> <Box palette=\"affirmative\" height=\"icon-massive\" /> <Box palette=\"negative\" height=\"icon-massive\" /> </Mosaic.Container> </Box> </div> <div> <Text is=\"strong\">HUGE</Text> <Box palette=\"inverse\" padding=\"small\"> <Mosaic.Container sizing=\"huge\" spacing=\"medium\" > <Box palette=\"alert\" height=\"icon-massive\" /> <Box palette=\"affirmative\" height=\"icon-massive\" /> <Box palette=\"negative\" height=\"icon-massive\" /> </Mosaic.Container> </Box> </div> <div> <Text is=\"strong\">MASSIVE</Text> <Box palette=\"inverse\" padding=\"small\"> <Mosaic.Container sizing=\"massive\" spacing=\"medium\" > <Box palette=\"alert\" height=\"icon-massive\" /> <Box palette=\"affirmative\" height=\"icon-massive\" /> <Box palette=\"negative\" height=\"icon-massive\" /> </Mosaic.Container> </Box> </div> </Stack.Container> Spacing NOTE : By passing an array, you can set responsive values . e.g. spacing={[\"medium\", \"tablet:small\", \"mobile:tiny\"]} You can adjust the spacing between items via the spacing, spacing_x, and spacing_y properties. <script> import { Box, Mosaic, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div> <Text is=\"strong\">DEFAULT</Text> <Box palette=\"inverse\" padding=\"small\"> <Mosaic.Container sizing=\"tiny\"> <Box palette=\"alert\" height=\"icon-massive\" /> <Box palette=\"affirmative\" height=\"icon-massive\" /> <Box palette=\"negative\" height=\"icon-massive\" /> </Mosaic.Container> </Box> </div> <div> <Text is=\"strong\">NANO</Text> <Box palette=\"inverse\" padding=\"small\"> <Mosaic.Container sizing=\"tiny\" spacing=\"nano\" > <Box palette=\"alert\" height=\"icon-massive\" /> <Box palette=\"affirmative\" height=\"icon-massive\" /> <Box palette=\"negative\" height=\"icon-massive\" /> </Mosaic.Container> </Box> </div> <div> <Text is=\"strong\">TINY</Text> <Box palette=\"inverse\" padding=\"small\"> <Mosaic.Container sizing=\"tiny\" spacing=\"tiny\" > <Box palette=\"alert\" height=\"icon-massive\" /> <Box palette=\"affirmative\" height=\"icon-massive\" /> <Box palette=\"negative\" height=\"icon-massive\" /> </Mosaic.Container> </Box> </div> <div> <Text is=\"strong\">SMALL</Text> <Box palette=\"inverse\" padding=\"small\"> <Mosaic.Container sizing=\"tiny\" spacing=\"small\" > <Box palette=\"alert\" height=\"icon-massive\" /> <Box palette=\"affirmative\" height=\"icon-massive\" /> <Box palette=\"negative\" height=\"icon-massive\" /> </Mosaic.Container> </Box> </div> <div> <Text is=\"strong\">MEDIUM</Text> <Box palette=\"inverse\" padding=\"small\"> <Mosaic.Container sizing=\"tiny\" spacing=\"medium\" > <Box palette=\"alert\" height=\"icon-massive\" /> <Box palette=\"affirmative\" height=\"icon-massive\" /> <Box palette=\"negative\" height=\"icon-massive\" /> </Mosaic.Container> </Box> </div> <div> <Text is=\"strong\">LARGE</Text> <Box palette=\"inverse\" padding=\"small\"> <Mosaic.Container sizing=\"tiny\" spacing=\"large\" > <Box palette=\"alert\" height=\"icon-massive\" /> <Box palette=\"affirmative\" height=\"icon-massive\" /> <Box palette=\"negative\" height=\"icon-massive\" /> </Mosaic.Container> </Box> </div> <div> <Text is=\"strong\">HUGE</Text> <Box palette=\"inverse\" padding=\"small\"> <Mosaic.Container sizing=\"tiny\" spacing=\"huge\" > <Box palette=\"alert\" height=\"icon-massive\" /> <Box palette=\"affirmative\" height=\"icon-massive\" /> <Box palette=\"negative\" height=\"icon-massive\" /> </Mosaic.Container> </Box> </div> <div> <Text is=\"strong\">MASSIVE</Text> <Box palette=\"inverse\" padding=\"small\"> <Mosaic.Container sizing=\"tiny\" spacing=\"massive\" > <Box palette=\"alert\" height=\"icon-massive\" /> <Box palette=\"affirmative\" height=\"icon-massive\" /> <Box palette=\"negative\" height=\"icon-massive\" /> </Mosaic.Container> </Box> </div> </Stack.Container> Item Span NOTE : Introduced feature in v0.6.0. NOTE : By passing an array, you can set responsive values . e.g. span={[\"3\", \"tablet:2\", \"mobile:1\"]} You can adjust span of individual items via the span, span_x, span_y properties, by wrapping the items in Mosaic.Item. <script> import {Box, Mosaic} from \"@kahi-ui/framework\"; </script> <Mosaic.Container sizing=\"tiny\" spacing=\"medium\"> <Box palette=\"alert\" height=\"icon-massive\" /> <Mosaic.Item span_x={[\"3\", \"mobile:1\", \"tablet:2\"]} > <Box palette=\"affirmative\" height=\"icon-massive\" /> </Mosaic.Item> <Box palette=\"negative\" height=\"icon-massive\" /> <Box palette=\"affirmative\" height=\"icon-massive\" /> <Box palette=\"negative\" height=\"icon-massive\" /> <Box palette=\"alert\" height=\"icon-massive\" /> <Box palette=\"alert\" height=\"icon-massive\" /> <Box palette=\"affirmative\" height=\"icon-massive\" /> <Box palette=\"negative\" height=\"icon-massive\" /> <Mosaic.Item span_x=\"2\"> <Box palette=\"negative\" height=\"icon-massive\" /> </Mosaic.Item> <Box palette=\"alert\" height=\"icon-massive\" /> <Box palette=\"affirmative\" height=\"icon-massive\" /> <Box palette=\"affirmative\" height=\"icon-massive\" /> <Box palette=\"negative\" height=\"icon-massive\" /> <Box palette=\"alert\" height=\"icon-massive\" /> </Mosaic.Container> "},{"identifier":"/docs/layouts/position","title":"Position","text":"Position NOTE : Introduced feature in v0.4.2. Position is a layout primitive that can float itself and child content in specific regions of the containing Components. <script> import { Badge, Button, Position, } from \"@kahi-ui/framework\"; </script> <Button palette=\"accent\"> Open Inbox <Position variation=\"indicator\" placement=\"top\" alignment_x=\"right\" > <Badge animation=\"pulse\" palette=\"negative\" shape=\"pill\" > +99 </Badge> </Position> </Button> Imports <script> import {Position} from \"@kahi-ui/framework\"; </script> Action NOTE : Introduced feature in v0.5.0. Typically used for FABs (Floating Action Buttons), you can set the Position to float its self (and its children) into a corner relative to the viewport via the variation property. <script> import { Button, Position, } from \"@kahi-ui/framework\"; </script> <Position variation=\"action\" alignment_x=\"left\" alignment_y=\"top\" > <Button palette=\"accent\">Action TOPxLEFT</Button> </Position> <Position variation=\"action\" alignment_y=\"top\"> <Button palette=\"accent\">Action TOPxRIGHT</Button> </Position> <Position variation=\"action\" alignment_x=\"left\"> <Button palette=\"accent\"> Action BOTTOMxLEFT </Button> </Position> <Position variation=\"action\"> <Button palette=\"accent\"> Action BOTTOMxRIGHT DEFAULT </Button> </Position> You can also adjust how far the Position sits away from the corner via the spacing, spacing_x, spacing_y properties respectively. <script> import { Button, Position, } from \"@kahi-ui/framework\"; </script> <Position variation=\"action\" spacing=\"huge\"> <Button palette=\"accent\"> Action HUGE Spacing </Button> </Position> You can also adjust the Position to sit relative to the parent container instead of viewport via the variation property. <script> import { Box, Button, Position, } from \"@kahi-ui/framework\"; </script> <Box palette=\"inverse\" padding=\"medium\"> Hello there! <Position variation={[\"container\", \"action\"]} alignment_y=\"top\" > <Button palette=\"accent\"> Action CONTAINER RELATIVE </Button> </Position> </Box> Indicator Typically used for unread indicators, you can set the Position to float its self (and its children) onto a corner relative to its parent container via the variation property. <script> import { Badge, Button, Position, Spacer, } from \"@kahi-ui/framework\"; </script> <Button palette=\"accent\"> Indicator TOPxLEFT <Position variation=\"indicator\" alignment_x=\"left\"> <Badge animation=\"pulse\" palette=\"negative\" shape=\"pill\" > +99 </Badge> </Position> </Button> <Button palette=\"accent\"> Indicator TOPxRIGHT DEFAULT <Position variation=\"indicator\"> <Badge animation=\"pulse\" palette=\"negative\" shape=\"pill\" > +99 </Badge> </Position> </Button> <Spacer spacing=\"small\" /> <Button palette=\"accent\"> Indicator BOTTOMxLEFT <Position variation=\"indicator\" alignment_x=\"left\" alignment_y=\"bottom\" > <Badge animation=\"pulse\" palette=\"negative\" shape=\"pill\" > +99 </Badge> </Position> </Button> <Button palette=\"accent\"> Indicator BOTTOMxRIGHT <Position variation=\"indicator\" alignment_y=\"bottom\" > <Badge animation=\"pulse\" palette=\"negative\" shape=\"pill\" > +99 </Badge> </Position> </Button> Raised You can set the Position to raise its self (and its children) in-place via the variation property. <script> import { Badge, Position, Spacer, Text, } from \"@kahi-ui/framework\"; </script> <Text is=\"span\"> <Position variation=\"raised\" placement=\"top\"> <Badge palette=\"accent\">+99</Badge> </Position> TOP </Text> <Text is=\"span\"> BOTTOM <Position variation=\"raised\" placement=\"bottom\"> <Badge palette=\"accent\">+99</Badge> </Position> </Text> <Spacer spacing=\"medium\" /> <Text is=\"span\"> <Position variation=\"raised\" placement=\"left\"> <Badge palette=\"accent\">+99</Badge> </Position> LEFT </Text> <Text is=\"span\"> RIGHT <Position variation=\"raised\" placement=\"right\"> <Badge palette=\"accent\">+99</Badge> </Position> </Text> "},{"identifier":"/docs/layouts/scrollable","title":"Scrollable","text":"Scrollable NOTE : Introduced feature in v0.2.3. Scrollable is a layout primitive for encapsulating a given available space into its own scrollable context. <script> import { Heading, Scrollable, } from \"@kahi-ui/framework\"; </script> <Scrollable class=\"scrollable-preview\"> <Heading> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. mus. </Heading> <Heading is=\"h2\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. mus. </Heading> <Heading is=\"h3\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. mus. </Heading> <Heading is=\"h4\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. mus. </Heading> <Heading is=\"h5\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. mus. </Heading> <Heading is=\"h6\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. mus. </Heading> </Scrollable> <style> :global(.scrollable-preview) { width: 24rem; height: 10rem; white-space: nowrap; } </style> Imports <script> import {Scrollable} from \"@kahi-ui/framework\"; </script> "},{"identifier":"/docs/layouts/spacer","title":"Spacer","text":"Spacer NOTE : Introduced feature in v0.2.0. Spacer is a layout primitive that takes up all available space between its two immediate siblings. <script> import { Box, Spacer, Stack, } from \"@kahi-ui/framework\"; </script> <Box palette=\"inverse\" padding_x=\"small\" padding_y=\"tiny\" > <Stack.Container orientation=\"horizontal\"> LEFT <Spacer /> RIGHT </Stack.Container> </Box> Imports <script> import {Spacer} from \"@kahi-ui/framework\"; </script> Spacing NOTE : By passing an array, you can set responsive values . e.g. spacing={[\"medium\", \"tablet:small\", \"mobile:tiny\"]} You can adjust the spacing between the immediate siblings via the spacing, spacing_x, and spacing_y properties. <script> import { Box, Spacer, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div> <Text is=\"strong\">NANO</Text> <Box palette=\"inverse\" padding_x=\"small\" padding_y=\"tiny\" > TOP <Spacer spacing=\"nano\" /> BOTTOM </Box> </div> <div> <Text is=\"strong\">TINY</Text> <Box palette=\"inverse\" padding_x=\"small\" padding_y=\"tiny\" > TOP <Spacer spacing=\"tiny\" /> BOTTOM </Box> </div> <div> <Text is=\"strong\">SMALL</Text> <Box palette=\"inverse\" padding_x=\"small\" padding_y=\"tiny\" > TOP <Spacer spacing=\"small\" /> BOTTOM </Box> </div> <div> <Text is=\"strong\">MEDIUM</Text> <Box palette=\"inverse\" padding_x=\"small\" padding_y=\"tiny\" > TOP <Spacer spacing=\"medium\" /> BOTTOM </Box> </div> <div> <Text is=\"strong\">LARGE</Text> <Box palette=\"inverse\" padding_x=\"small\" padding_y=\"tiny\" > TOP <Spacer spacing=\"large\" /> BOTTOM </Box> </div> <div> <Text is=\"strong\">HUGE</Text> <Box palette=\"inverse\" padding_x=\"small\" padding_y=\"tiny\" > TOP <Spacer spacing=\"huge\" /> BOTTOM </Box> </div> <div> <Text is=\"strong\">MASSIVE</Text> <Box palette=\"inverse\" padding_x=\"small\" padding_y=\"tiny\" > TOP <Spacer spacing=\"massive\" /> BOTTOM </Box> </div> </Stack.Container> Inline NOTE : Changed from variation=\"block/inline\" -> is=\"div/span\" in v0.4.10. You can have the Spacer rendering as an inline <span> via the is property. <script> import { Box, Spacer, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div> <Text is=\"strong\">BLOCK / DIV / DEFAULT</Text> <Box palette=\"inverse\" margin_top=\"small\" padding_x=\"small\" padding_y=\"tiny\" > TOP <Spacer spacing=\"huge\" /> BOTTOM </Box> </div> <div> <Text is=\"strong\">INLINE / SPAN</Text> <Box palette=\"inverse\" margin_top=\"small\" padding_x=\"small\" padding_y=\"tiny\" > LEFT <Spacer is=\"span\" orientation=\"horizontal\" spacing=\"huge\" /> RIGHT </Box> </div> </Stack.Container> "},{"identifier":"/docs/layouts/stack","title":"Stack","text":"Stack NOTE : Introduced feature in v0.2.0. WARNING : This feature was renamed from <Stack> to <Stack.Container> in v0.6.0 . Stack is a layout primitive for setting up a horizontal / vertical stacking of items with even spacing between children. <script> import {Box, Stack} from \"@kahi-ui/framework\"; </script> <Stack.Container> <Box palette=\"alert\" size=\"icon-massive\" /> <Box palette=\"affirmative\" size=\"icon-massive\" /> <Box palette=\"negative\" size=\"icon-massive\" /> </Stack.Container> Imports <script> import {Stack} from \"@kahi-ui/framework\"; const {Container, Item} = Stack; </script> Orientation NOTE : By passing an array, you can set responsive values . e.g. orientation={[\"desktop:horizontal\", \"widescreen:horizontal\"]} You can set the Stack to render horizontally via the orientation property. <script> import { Box, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container alignment_y=\"top\" orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div> <Text is=\"strong\">DEFAULT</Text> <Box palette=\"inverse\" padding=\"small\" width=\"content-min\" > <Stack.Container> <Box palette=\"alert\" size=\"icon-massive\" /> <Box palette=\"affirmative\" size=\"icon-massive\" /> <Box palette=\"negative\" size=\"icon-massive\" /> </Stack.Container> </Box> </div> <div> <Text is=\"strong\">HORIZONTAL</Text> <Box palette=\"inverse\" padding=\"small\"> <Stack.Container orientation=\"horizontal\"> <Box palette=\"alert\" size=\"icon-massive\" /> <Box palette=\"affirmative\" size=\"icon-massive\" /> <Box palette=\"negative\" size=\"icon-massive\" /> </Stack.Container> </Box> </div> </Stack.Container> Spacing NOTE : By passing an array, you can set responsive values . e.g. spacing={[\"medium\", \"tablet:small\", \"mobile:tiny\"]} You can adjust the spacing between items via the spacing, spacing_x, and spacing_y properties. <script> import { Box, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div> <Text is=\"strong\">DEFAULT</Text> <Box palette=\"inverse\" padding=\"small\" width=\"content-min\" > <Stack.Container> <Box palette=\"alert\" size=\"icon-massive\" /> <Box palette=\"affirmative\" size=\"icon-massive\" /> <Box palette=\"negative\" size=\"icon-massive\" /> </Stack.Container> </Box> </div> <div> <Text is=\"strong\">NANO</Text> <Box palette=\"inverse\" padding=\"small\" width=\"content-min\" > <Stack.Container spacing=\"nano\"> <Box palette=\"alert\" size=\"icon-massive\" /> <Box palette=\"affirmative\" size=\"icon-massive\" /> <Box palette=\"negative\" size=\"icon-massive\" /> </Stack.Container> </Box> </div> <div> <Text is=\"strong\">TINY</Text> <Box palette=\"inverse\" padding=\"small\" width=\"content-min\" > <Stack.Container spacing=\"tiny\"> <Box palette=\"alert\" size=\"icon-massive\" /> <Box palette=\"affirmative\" size=\"icon-massive\" /> <Box palette=\"negative\" size=\"icon-massive\" /> </Stack.Container> </Box> </div> <div> <Text is=\"strong\">SMALL</Text> <Box palette=\"inverse\" padding=\"small\" width=\"content-min\" > <Stack.Container spacing=\"small\"> <Box palette=\"alert\" size=\"icon-massive\" /> <Box palette=\"affirmative\" size=\"icon-massive\" /> <Box palette=\"negative\" size=\"icon-massive\" /> </Stack.Container> </Box> </div> <div> <Text is=\"strong\">MEDIUM</Text> <Box palette=\"inverse\" padding=\"small\" width=\"content-min\" > <Stack.Container spacing=\"medium\"> <Box palette=\"alert\" size=\"icon-massive\" /> <Box palette=\"affirmative\" size=\"icon-massive\" /> <Box palette=\"negative\" size=\"icon-massive\" /> </Stack.Container> </Box> </div> <div> <Text is=\"strong\">LARGE</Text> <Box palette=\"inverse\" padding=\"small\" width=\"content-min\" > <Stack.Container spacing=\"large\"> <Box palette=\"alert\" size=\"icon-massive\" /> <Box palette=\"affirmative\" size=\"icon-massive\" /> <Box palette=\"negative\" size=\"icon-massive\" /> </Stack.Container> </Box> </div> <div> <Text is=\"strong\">HUGE</Text> <Box palette=\"inverse\" padding=\"small\" width=\"content-min\" > <Stack.Container spacing=\"huge\"> <Box palette=\"alert\" size=\"icon-massive\" /> <Box palette=\"affirmative\" size=\"icon-massive\" /> <Box palette=\"negative\" size=\"icon-massive\" /> </Stack.Container> </Box> </div> <div> <Text is=\"strong\">MASSIVE</Text> <Box palette=\"inverse\" padding=\"small\" width=\"content-min\" > <Stack.Container spacing=\"massive\"> <Box palette=\"alert\" size=\"icon-massive\" /> <Box palette=\"affirmative\" size=\"icon-massive\" /> <Box palette=\"negative\" size=\"icon-massive\" /> </Stack.Container> </Box> </div> </Stack.Container> Alignment NOTE : By passing an array, you can set responsive values . e.g. alignment_x={[\"center\", \"tablet:left\", \"mobile:right\"]} You can adjust the spacing between items via the alignment, alignment_x, and alignment_y properties. <script> import { Box, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container class=\"stack-alignment\" orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div> <Text is=\"strong\">DEFAULT</Text> <Box palette=\"inverse\" padding=\"small\" width=\"content-min\" > <Stack.Container> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> </Stack.Container> </Box> </div> <div> <Text is=\"strong\">CENTER X/Y</Text> <Box palette=\"inverse\" padding=\"small\"> <Stack.Container alignment=\"center\"> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> </Stack.Container> </Box> </div> <div> <Text is=\"strong\">STRETCH X</Text> <Box palette=\"inverse\" padding=\"small\"> <Stack.Container alignment_x=\"stretch\"> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> </Stack.Container> </Box> </div> <div> <Text is=\"strong\">LEFT X</Text> <Box palette=\"inverse\" padding=\"small\"> <Stack.Container alignment_x=\"left\"> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> </Stack.Container> </Box> </div> <div> <Text is=\"strong\">RIGHT X</Text> <Box palette=\"inverse\" padding=\"small\"> <Stack.Container alignment_x=\"right\"> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> </Stack.Container> </Box> </div> <div> <Text is=\"strong\">TOP Y</Text> <Box palette=\"inverse\" padding=\"small\" width=\"content-min\" > <Stack.Container alignment_y=\"top\"> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> </Stack.Container> </Box> </div> <div> <Text is=\"strong\">BOTTOM Y</Text> <Box palette=\"inverse\" padding=\"small\" width=\"content-min\" > <Stack.Container alignment_y=\"bottom\"> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> </Stack.Container> </Box> </div> </Stack.Container> <style> :global(.stack-alignment .stack .box) { min-width: 3rem; min-height: 3rem; } :global(.stack-alignment .stack[data-alignment~=\"center\"]) { width: 6rem; height: 12rem; } :global(.stack-alignment .stack[data-alignment-x~=\"stretch\"]) { width: 6rem; height: 12rem; } :global(.stack-alignment .stack[data-alignment-x~=\"left\"]), :global(.stack-alignment .stack[data-alignment-x~=\"right\"]) { width: 6rem; } :global(.stack-alignment .stack[data-alignment-y~=\"top\"]), :global(.stack-alignment .stack[data-alignment-y~=\"bottom\"]) { height: 12rem; } </style> Wrap You can alter the Stack to wraps its children into the next line via the variation property. <script> import {Box, Stack} from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"huge\" variation=\"wrap\" > <Box palette=\"alert\" size=\"icon-massive\" /> <Box palette=\"affirmative\" size=\"icon-massive\" /> <Box palette=\"negative\" size=\"icon-massive\" /> <Box palette=\"alert\" size=\"icon-massive\" /> <Box palette=\"affirmative\" size=\"icon-massive\" /> <Box palette=\"negative\" size=\"icon-massive\" /> <Box palette=\"alert\" size=\"icon-massive\" /> </Stack.Container> Item Stretch NOTE : Introduced feature in v0.6.0. You can adjust span of individual items via the variation=\"stretch\" property, when wrapping an item in Stack.Item. <script> import {Box, Stack} from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" width=\"100\"> <Box palette=\"alert\" variation=\"borders\" size=\"icon-massive\" /> <Stack.Item variation=\"stretch\"> <Box palette=\"affirmative\" variation=\"borders\" min_width=\"icon-massive\" height=\"icon-massive\" /> </Stack.Item> <Box palette=\"negative\" variation=\"borders\" size=\"icon-massive\" /> </Stack.Container> "},{"identifier":"/docs/migrations/0.4.x-to-0.5.x","title":"0.4.x to 0.5.x","text":"0.4.x to 0.5.x Introduced in v0.5.0 Main changes introduced were previously deprecated functionality, obsoleted functionality, and refactoring to promote better composability / reuse between Components. Aside Built-in Collapse Removal Due to the multitude of ways you can design an top navigation collapse feature, the built-in collapsing was removed from Aside. Instead the Framework provides an unopinionated baseline that you can use augment with Components to build viewport-aware collapsing. BEFORE <script> import { Anchor, Aside, ContextButton, Divider, Menu, Spacer, Text, } from \"@kahi-ui/framework\"; </script> <Aside.Container logic_id=\"aside-collapsing-old\" palette=\"inverse\" max_width=\"content-max\" height=\"100\" captive dismissible > <Aside.Header> <Anchor href=\"#\">Kahi UI</Anchor> <Divider /> </Aside.Header> <Aside.Section> <Menu.Container> <Menu.Heading>DISPLAY</Menu.Heading> <Menu.Button> Badge <Spacer /> <span>ICON</span> </Menu.Button> <Menu.Heading>FEEDBACK</Menu.Heading> <Menu.Button> Dot <Spacer /> <span>ICON</span> </Menu.Button> <Menu.Button active> Spinner <Spacer /> <span>ICON</span> </Menu.Button> </Menu.Container> </Aside.Section> <Aside.Footer> <Anchor href=\"#\"> <Text is=\"small\">v0.5.0</Text> </Anchor> </Aside.Footer> <svelte:fragment slot=\"close\"> <ContextButton size=\"huge\" palette=\"dark\" variation=\"clear\" > - </ContextButton> </svelte:fragment> <svelte:fragment slot=\"open\"> <ContextButton size=\"huge\">+</ContextButton> </svelte:fragment> </Aside.Container> AFTER <script> import { Anchor, Aside, Button, Divider, Menu, Position, Overlay, Spacer, Text, } from \"@kahi-ui/framework\"; </script> <Position variation=\"action\" alignment_x=\"left\" hidden={[\"desktop\", \"widescreen\"]} > <Button for=\"aside-collapsing-new\">+</Button> </Position> <Overlay.Container logic_id=\"aside-collapsing-new\" dismissible > <Overlay.Backdrop hidden={[\"desktop\", \"widescreen\"]} /> <Overlay.Section contents={[\"desktop\", \"widescreen\"]} animation=\"slide\" direction=\"left\" alignment_x=\"left\" > <Aside.Container palette=\"inverse\" max_width=\"content-max\" height=\"100\" > <Aside.Header> <Anchor href=\"#\">Kahi UI</Anchor> <Divider /> </Aside.Header> <Aside.Section> <Menu.Container> <Menu.Heading> DISPLAY </Menu.Heading> <Menu.Button> Badge <Spacer /> <span>ICON</span> </Menu.Button> <Menu.Heading> FEEDBACK </Menu.Heading> <Menu.Button> Dot <Spacer /> <span>ICON</span> </Menu.Button> <Menu.Button active> Spinner <Spacer /> <span>ICON</span> </Menu.Button> </Menu.Container> </Aside.Section> <Aside.Footer> <Anchor href=\"#\"> <Text is=\"small\">v0.5.0</Text> </Anchor> </Aside.Footer> <Position variation={[\"container\", \"action\"]} hidden={[\"desktop\", \"widescreen\"]} > <Overlay.Button variation=\"clear\"> - </Overlay.Button> </Position> </Aside.Container> </Overlay.Section> </Overlay.Container> Badge position Property Removal Due to the introduction of the Position Component, the position property was obsoleted. BEFORE <script> import {Badge, Button} from \"@kahi-ui/framework\"; </script> <Button palette=\"accent\"> Open Inbox <Badge palette=\"negative\" position=\"floated\"> +99 </Badge> </Button> AFTER <script> import { Badge, Button, Position, } from \"@kahi-ui/framework\"; </script> <Button palette=\"accent\"> Open Inbox <Position variation=\"floated\" placement=\"top\" alignment_x=\"right\" > <Badge palette=\"negative\" shape=\"pill\"> +99 </Badge> </Position> </Button> Check Focus Events Removal Due to the introduction of the focusin / focusout global HTML5 events, the blur / focus events were removed. The new events should work functionally the same as a drop-in replacement. BEFORE <script> import {Check} from \"@kahi-ui/framework\"; function on_blur(event) { // ... } function on_focus(event) { // ... } </script> <Check on:blur={on_blur} on:focus={on_focus} /> AFTER <script> import {Check} from \"@kahi-ui/framework\"; function on_focus_in(event) { // ... } function on_focus_out(event) { // ... } </script> <Check on:focusin={on_focus_in} on:focusout={on_focus_out} /> Dot position Property Removal Due to the introduction of the Position Component, the position property was obsoleted. BEFORE <script> import {Dot, Button} from \"@kahi-ui/framework\"; </script> <Button palette=\"accent\"> Open Inbox <Dot palette=\"negative\" position=\"floated\" /> </Button> AFTER <script> import { Dot, Button, Position, } from \"@kahi-ui/framework\"; </script> <Button palette=\"accent\"> Open Inbox <Position variation=\"floated\" placement=\"top\" alignment_x=\"right\" > <Dot palette=\"negative\" /> </Position> </Button> Ellipsis character Property Removal To allow for embedded icons (e.g. SVGs), the character property was removed in favor of accepting the default slot as character customization. BEFORE <script> import {Ellipsis} from \"@kahi-ui/framework\"; </script> <Ellipsis character=\"?\" /> AFTER <script> import {Ellipsis} from \"@kahi-ui/framework\"; </script> <Ellipsis>?</Ellipsis> Offscreen Removal in Favor of Overlay With the new changes regarding being able to configure Overlay 's animations, and Overlay already having configurable positioning, Offscreen was removed as duplicate work. BEFORE <script> import { Box, Button, ContextButton, Offscreen, Stack, } from \"@kahi-ui/framework\"; </script> <Button for=\"offscreen-old\" palette=\"accent\"> Open Offscreen </Button> <Offscreen logic_id=\"offscreen-old\" placement=\"top\" hidden captive dismissible > <Box palette=\"accent\" padding=\"medium\"> <Stack orientation=\"horizontal\" alignment_y=\"center\" spacing=\"medium\" > <ContextButton palette=\"light\" variation=\"clear\" > X </ContextButton> Well, hello there! </Stack> </Box> </Offscreen> AFTER <script> import { Box, Button, Overlay, Stack, } from \"@kahi-ui/framework\"; </script> <Button for=\"offscreen-new\" palette=\"accent\"> Open Overlay </Button> <Overlay.Container logic_id=\"offscreen-new\" alignment_x=\"stretch\" alignment_y=\"top\" dismissible > <Overlay.Backdrop /> <Overlay.Section animation=\"slide\" direction=\"top\"> <Box palette=\"accent\" padding=\"medium\"> <Stack orientation=\"horizontal\" alignment_y=\"center\" spacing=\"medium\" > <Overlay.Button palette=\"light\" variation=\"clear\" > X </Overlay.Button> Well, hello there! </Stack> </Box> </Overlay.Section> </Overlay.Container> Offscreen hidden Override Property Removal The Framework now provides this functionality as a global contents property. Omni Built-in Collapse Removal Due to the multitude of ways you can design an top navigation collapse feature, the built-in collapsing was removed from Omni. Instead the Framework provides an unopinionated baseline that you can use augment with Components to build viewport-aware overflow collapsing. BEFORE <Omni.Container logic_id=\"omni-collapse-old\" palette=\"dark\" width=\"100\" captive dismissible > <Omni.Header> <Anchor href=\"#\">Kahi UI</Anchor> <Divider orientation=\"vertical\" /> <Anchor href=\"#\"> <Text is=\"small\">v0.5.0</Text> </Anchor> <ContextButton variation=\"clear\"> + </ContextButton> <ContextButton variation=\"clear\"> - </ContextButton> </Omni.Header> <Omni.Footer> <Omni.Section> <Menu.Container orientation=\"horizontal\"> <Menu.Button active>Docs</Menu.Button> <Menu.Button>Playground</Menu.Button> <Menu.Button>Storybook</Menu.Button> </Menu.Container> </Omni.Section> <Omni.Section> <Menu.Container orientation=\"horizontal\"> <Menu.Button>GitHub</Menu.Button> </Menu.Container> </Omni.Section> </Omni.Footer> </Omni.Container> AFTER <script> import { Anchor, Box, Divider, Menu, Omni, Popover, } from \"@kahi-ui/framework\"; </script> <Omni.Container palette=\"dark\" width=\"100\"> <Omni.Header> <Anchor href=\"#\">Kahi UI</Anchor> <Divider orientation=\"vertical\" /> <Anchor href=\"#\"> <Text is=\"small\">v0.5.0</Text> </Anchor> </Omni.Header> <Omni.Section hidden={[\"mobile\", \"tablet\"]}> <Menu.Container orientation=\"horizontal\"> <Menu.Button active>Docs</Menu.Button> <Menu.Button>Playground</Menu.Button> <Menu.Button>Storybook</Menu.Button> </Menu.Container> </Omni.Section> <Omni.Footer> <Menu.Container hidden={[\"mobile\", \"tablet\"]} orientation=\"horizontal\" > <Menu.Button>GitHub</Menu.Button> </Menu.Container> <Popover.Container hidden={[\"desktop\", \"widescreen\"]} logic_id=\"omni-collapse-new\" dismissible > <Popover.Button variation=\"clear\"> + </Popover.Button> <Popover.Section alignment_x=\"left\" spacing=\"small\" > <Box palette=\"auto\" elevation=\"high\" padding=\"medium\" shape=\"rounded\" > <Menu.Container> <Menu.Button active> Docs </Menu.Button> <Menu.Button> Playground </Menu.Button> <Menu.Button> Storybook </Menu.Button> <Menu.Button> GitHub </Menu.Button> </Menu.Container> </Box> </Popover.Section> </Popover.Container> </Omni.Footer> </Omni.Container> Overlay is now a Multi-Pattern Component In order to better facilitate future features, Overlay was changed to be a multi-pattern Component. With CSS-logic handling staying in the top-level <Overlay.Container>, and rendering related handling splitting off into <Overlay.Section>. BEFORE <script> import {Box, Overlay} from \"@kahi-ui/framework\"; </script> <Overlay spacing=\"medium\"> <Box>I am a Box!</Box> <Box>And I am another Box!</Box> </Overlay> AFTER <script> import {Box, Overlay} from \"@kahi-ui/framework\"; </script> <Overlay.Container> <Overlay.Section spacing=\"medium\"> <Box>I am a Box!</Box> <Box>And I am another Box!</Box> </Overlay.Section> </Overlay.Container> Also note, instead of a seperate ContextButton Component, there is now an Overlay-specific <Overlay.Button> that automatically inherits logic_id. BEFORE <script> import { Box, Button, ContextButton, Overlay, } from \"@kahi-ui/framework\"; </script> <Button for=\"overlay-context-button\"> Open Overlay </Button> <Overlay logic_id=\"overlay-context-button\"> <Box padding=\"small\"> <ContextButton>Dismiss</ContextButton> </Box> </Overlay> <script> import { Box, Button, Overlay, } from \"@kahi-ui/framework\"; </script> <Button for=\"overlay-multi-pattern-button\"> Open Overlay </Button> <Overlay.Container logic_id=\"overlay-multi-pattern-button\" > <Overlay.Section> <Box padding=\"small\"> <Overlay.Button>Dismiss</Overlay.Button> </Box> </Overlay.Section> </Overlay.Container> Overlay captive Property Removal To support customization via properties, <Overlay captive> was removed in favor of composable a <Overlay.Backdrop> Component. BEFORE <script> import {Button, Overlay} from \"@kahi-ui/framework\"; </script> <Button for=\"overlay-captive-property\"> Open Overlay </Button> <Overlay logic_id=\"overlay-captive-property\" captive dismissible > ... </Overlay> <script> import {Button, Overlay} from \"@kahi-ui/framework\"; </script> <Button for=\"overlay-backdrop-component\"> Open Overlay </Button> <Overlay.Container logic_id=\"overlay-backdrop-component\" > <Overlay.Backdrop /> ... </Overlay.Container> Popover is now a Multi-Pattern Component In order to better facilitate future features, Popover was changed to be a multi-pattern Component. With CSS-logic handling staying in the top-level <Popover.Container>, and rendering related handling splitting off into <Popover.Section>. BEFORE <script> import {Box, Popover} from \"@kahi-ui/framework\"; </script> <Popover spacing=\"medium\"> <!-- ... --> <Box>I am a Box!</Box> </Popover> AFTER <script> import {Box, Popover} from \"@kahi-ui/framework\"; </script> <Popover.Container> <!-- ... --> <Popover.Section spacing=\"medium\"> <Box>I am a Box!</Box> </Popover.Section> </Popover.Container> Also note, instead of a seperate ContextButton Component, there is now an Popover-specific <Popover.Button> that automatically inherits logic_id. BEFORE <script> import { Box, ContextButton, Popover, } from \"@kahi-ui/framework\"; </script> <Popover logic_id=\"popover-context-button\"> <ContextButton>Open Popover</ContextButton> <Box>I am a Box!</Box> </Popover> AFTER <script> import {Box, Popover} from \"@kahi-ui/framework\"; </script> <Popover.Container> <Popover.Button>Open Popover</Popover.Button> <Popover.Section> <Box>I am a Box!</Box> </Popover.Section> </Popover.Container> Popover hidden Override Property Removal The Framework now provides this functionality as a global contents property. Position floated placement Removal To consistently align with Components like Overlay , <Position variation=\"floated\" placement=\"top/bottom\"> was renamed to <Position variation=\"floated\" alignment_y=\"top/bottom\">. BEFORE <script> import {Position} from \"@kahi-ui/framework\"; </script> <Position variation=\"floated\" placement=\"top\"> ... </Position> AFTER <script> import {Position} from \"@kahi-ui/framework\"; </script> <Position variation=\"floated\" alignment_y=\"top\"> ... </Position> Radio Focus Events Removal Due to the introduction of the focusin / focusout global HTML5 events, the blur / focus events were removed. The new events should work functionally the same as a drop-in replacement. BEFORE <script> import {Radio} from \"@kahi-ui/framework\"; function on_blur(event) { // ... } function on_focus(event) { // ... } </script> <Radio on:blur={on_blur} on:focus={on_focus} /> AFTER <script> import {Radio} from \"@kahi-ui/framework\"; function on_focus_in(event) { // ... } function on_focus_out(event) { // ... } </script> <Radio on:focusin={on_focus_in} on:focusout={on_focus_out} /> Spacer orientation Property Removal To simplify the backing CSS, the orientation property was removed in favor of using the existing spacing_x / spacing_y properties for axis-specific spacing. BEFORE <script> import {Spacer} from \"@kahi-ui/framework\"; </script> <Spacer orientation=\"horizontal\" spacing=\"huge\" /> AFTER <script> import {Spacer} from \"@kahi-ui/framework\"; </script> <Spacer spacing_x=\"huge\" /> Spacer variation Property Removal To bring Spacer inline with API functionality -> naming used in other Components, variation was removed in favor of is. BEFORE <script> import {Spacer} from \"@kahi-ui/framework\"; </script> <Spacer variation=\"inline\" /> AFTER <script> import {Spacer} from \"@kahi-ui/framework\"; </script> <Spacer is=\"span\" /> Switch Focus Events Removal Due to the introduction of the focusin / focusout global HTML5 events, the blur / focus events were removed. The new events should work functionally the same as a drop-in replacement. BEFORE <script> import {Switch} from \"@kahi-ui/framework\"; function on_blur(event) { // ... } function on_focus(event) { // ... } </script> <Switch on:blur={on_blur} on:focus={on_focus} /> AFTER <script> import {Switch} from \"@kahi-ui/framework\"; function on_focus_in(event) { // ... } function on_focus_out(event) { // ... } </script> <Switch on:focusin={on_focus_in} on:focusout={on_focus_out} /> TextInput Focus Events Removal Due to the introduction of the focusin / focusout global HTML5 events, the blur / focus events were removed. The new events should work functionally the same as a drop-in replacement. BEFORE <script> import {TextInput} from \"@kahi-ui/framework\"; function on_blur(event) { // ... } function on_focus(event) { // ... } </script> <TextInput on:blur={on_blur} on:focus={on_focus} /> AFTER <script> import {TextInput} from \"@kahi-ui/framework\"; function on_focus_in(event) { // ... } function on_focus_out(event) { // ... } </script> <TextInput on:focusin={on_focus_in} on:focusout={on_focus_out} /> Transition CSS Custom Properties Removal Due to the new <Transition behavior=\"explicit\"> implementation, the current variables would have to get extremely verbose. And ultimately seems a very limited use-case to have animations customizable on that level. "},{"identifier":"/docs/migrations/0.5.x-to-0.6.x","title":"0.5.x to 0.6.x","text":"0.5.x to 0.6.x Introduced in v0.6.0 Main changes introduced were consolidation of various properies and overhaul of how the stylesheet distributables were built for themeing. Framework Distributable Split Themeing variables are now built to a separate CSS distributable that should be imported after the main Framework import. BEFORE import \"@kahi-ui/framework/dist/kahi-ui.framework.css\"; AFTER import \"@kahi-ui/framework/dist/kahi-ui.framework.css\"; import \"@kahi-ui/framework/dist/kahi-ui.theme.default.css\"; Component Selectors Updated to use Class Names IMPORTANT : You should never use built-in class names or target elements semantically yourself when targeting Kahi UI Components, it is considered unstable internal API! Always use custom class names! e.g. <Card.Footer class=\"my-card-footer\"> Previously Components would use context-aware selectors or target their elements semantically. e.g. <Card.Footer> — .card > footer is now .card--footer. <Heading is=\"h2\"> — h2 is now h2.heading. This makes Kahi UI opt-in regarding Components and reduces conflict. htmlpalette Changed to htmlmode Since <html data-palette> is now <html data-mode>, the htmlpalette Svelte Store has been renamed to htmlmode. BEFORE import {htmlpalette} from \"@kahi-ui/framework\"; AFTER import {htmlmode} from \"@kahi-ui/framework\"; <html data-palette> Changed to <html data-mode> To clarify intent \"dark\" and \"light\" of theme modes from Component palettes (dark, alert, negative, etc...), <html data-palette> is now <html data-mode>. BEFORE <html data-palette=\"dark\"> ... </html> AFTER <html data-mode=\"dark\"> ... </html> <* align> Property Consolidated into alignment_x Property Originally align / alignment_x properties had incompatible implementations, since they both now work via CSS Variables, they're being consolidated into a single alignment_x property. AFFECTED COMPONENTS : <Heading> <NumberInput> <Text> <TextInput> BEFORE <script> import {Text} from \"@kahi-ui/framework\"; </script> <Text align=\"right\">I'm aligned to the right!</Text> AFTER <script> import {Text} from \"@kahi-ui/framework\"; </script> <Text alignment_x=\"right\"> I'm aligned to the right! </Text> <* animation> Property Consolidated into Animation Component Much like the Transition Component, all repeating attention grabbing animations have been consolidated into a general purpose Animation Component. AFFECTED COMPONENTS : <Badge> <Dot> BEFORE <script> import {Dot} from \"@kahi-ui/framework\"; </script> <Dot animation=\"pulse\" /> AFTER <script> import {Animation, Dot} from \"@kahi-ui/framework\"; </script> <Animation animation=\"pulse\"> <Dot /> </Animation> <* calendar> Property Removed / <* highlight timestamp value> Due to a bug introduced in Chrome 96+ / Firefox 96+ regarding I18n APIs with the older release of the Temporal API, and bug in Firefox regarding non-ISO 8601 calendars (e.g. Gregorian), cross-calendar datetime manipulation has been removed. And going forward, only ISO 8601 Calendar timestamps will be accepted into property values. If non-ISO 8601 Calendar timestamps are used, e.g. 2021-11-10[u-ca=gregory]. During any interaction by the user with the Component, it will be converted into a ISO 8601 Calendar timestamp. AFFECTED COMPONENTS : <DayPicker> <DayStepper> <MonthPicker> <MonthStepper> <YearPicker> <YearStepper> <* size> Property Consolidated into sizing Property Originally size / sizing properties had incompatible implementations, since they both now work via CSS Variables, they're being consolidated into a single sizing property. AFFECTED COMPONENTS : <Button> <Check> <NumberInput> <Overlay.Button> <Popover.Button> <Progress> <Radio> <Switch> <Text> <TextInput> BEFORE <script> import {Button} from \"@kahi-ui/framework\"; </script> <Button size=\"tiny\">Click me!</Button> AFTER <script> import {Button} from \"@kahi-ui/framework\"; </script> <Button sizing=\"tiny\">Click me!</Button> <Button href for value> Implicit Elements Changed to Require Explicit is Property To make Button's API consistent with the rest of the Framework's multi-element Components, is is now required to render the other elements besides <button>. BEFORE <script> import {Button} from \"@kahi-ui/framework\"; </script> <Button href=\"https://google.com\" target=\"_blank\" rel=\"noopener noreferrer\" > This is an ANCHOR Button! </Button> <Button for=\"button-type-check\"> This is a LABEL Button! </Button> <Button value=\"This is an INPUT Button!\" /> <Button type=\"submit\" value=\"This is a SUBMIT Button!\" /> <Button type=\"reset\" value=\"This is a RESET Button!\" /> AFTER <script> import {Button} from \"@kahi-ui/framework\"; </script> <Button is=\"a\" href=\"https://google.com\" target=\"_blank\" rel=\"noopener noreferrer\" > This is an ANCHOR Button! </Button> <Button is=\"label\" for=\"button-type-check\"> This is a LABEL Button! </Button> <Button is=\"input\" value=\"This is an INPUT Button!\" /> <Button is=\"input\" type=\"submit\" value=\"This is a SUBMIT Button!\" /> <Button is=\"input\" type=\"reset\" value=\"This is a RESET Button!\" /> <Container viewport> Removed in Favor of Viewport Width Properties v0.6.0 introduces Viewport breakpoints to the global size property values. Which you can use to replicate previous behavior via width / max_width properties. BEFORE <script> import {Container} from \"@kahi-ui/framework\"; </script> <Container viewport=\"mobile\">hello world!</Container> AFTER <script> import {Container} from \"@kahi-ui/framework\"; </script> <Container width=\"viewport-mobile\" max_width=\"100\"> hello world! </Container> <DayStepper step> / <MonthStepper step> / <YearStepper step> Properties Consolidated into <* steps> Property To be consistent with later additions to the Component APIs, the step property was renamed to the steps property. With otherwise no additional changes. BEFORE <script> import {DayStepper} from \"@kahi-ui/framework\"; </script> <DayStepper step={5} /> AFTER <script> import {DayStepper} from \"@kahi-ui/framework\"; </script> <DayStepper steps={5} /> <Figure size> Removed in Favor of width / height / size Global Properties v0.6.0 introduced new block sizing values to the global sizing properties. Previously <Figure size> would only apply to the width dimension, so if that affects you, you will need to migrate. Otherwise no other changes needed. BEFORE <script> import {Figure} from \"@kahi-ui/framework\"; </script> <Figure size=\"medium\"> <img src=\"...\" /> </Figure> AFTER <script> import {Figure} from \"@kahi-ui/framework\"; </script> <Figure width=\"medium\"> <img src=\"...\" /> </Figure> <Figure variation=\"icon\" size> Removed in Favor of width / height / size Prefixed Global Properties v0.6.0 introduced new icon sizing values to the global sizing properties via icon- prefixes. BEFORE <script> import {Figure} from \"@kahi-ui/framework\"; </script> <Figure variation=\"icon\" size=\"small\"> <img src=\"...\" /> </Figure> AFTER <script> import {Figure} from \"@kahi-ui/framework\"; </script> <Figure width=\"icon-small\"> <img src=\"...\" /> </Figure> <Menu.SubMenu> Changed to <Menu.Section> To remain consistent in naming with the rest of the Component API, <Menu.SubMenu> was renamed to <Menu.Section>. BEFORE <script> import {Menu} from \"@kahi-ui/framework\"; </script> <Menu.SubMenu>...</Menu.SubMenu> AFTER <script> import {Menu} from \"@kahi-ui/framework\"; </script> <Menu.Section>...</Menu.Section> <Menu.Heading> sub-menu Slot Removed Menu Component's DOM structure is now updated to use flat structure of <div> elements, instead of <ul> / <li> elements. So slots are no longer needed, as <Menu.Section> can be a sibling in DOM structure. BEFORE <script> import { Menu, Spacer, Text, } from \"@kahi-ui/framework\"; </script> <Menu.Container> <Menu.Heading> COMPONENTS <svelte:fragment slot=\"sub-menu\"> <Menu.SubMenu> <Menu.Button active> Dot <Spacer /> <Text is=\"span\">ICON</Text> </Menu.Button> <Menu.Button> Ellipsis <Spacer /> <Text is=\"span\">ICON</Text> </Menu.Button> </Menu.SubMenu> </svelte:fragment> </Menu.Heading> </Menu.Container> AFTER <script> import { Menu, Spacer, Text, } from \"@kahi-ui/framework\"; </script> <Menu.Container> <Menu.Heading>COMPONENTS</Menu.Heading> <Menu.Section> <Menu.Button active> Dot <Spacer /> <Text is=\"span\">ICON</Text> </Menu.Button> <Menu.Button> Ellipsis <Spacer /> <Text is=\"span\">ICON</Text> </Menu.Button> </Menu.Section> </Menu.Container> <Menu.Divider> Merged into <Menu.Header> Due to duplicate styling, <Menu.Divider> was merged into <Menu.Header>. With <Menu.Divider /> becoming <Menu.Heading />, and <Menu.Divider>Text Divider</Menu.Divider> becoming <Menu.Heading variation=\"divider\">Text Divider</Menu.Heading>. BEFORE <script> import { Menu, Spacer, Text, } from \"@kahi-ui/framework\"; </script> <Menu.Container> <Menu.Divider> COMPONENTS <svelte:fragment slot=\"sub-menu\"> <Menu.SubMenu> <Menu.Button active> Dot <Spacer /> <Text is=\"span\">ICON</Text> </Menu.Button> <Menu.Button> Ellipsis <Spacer /> <Text is=\"span\">ICON</Text> </Menu.Button> </Menu.SubMenu> </svelte:fragment> </Menu.Divider> <Menu.Divider /> <Menu.Heading> <svelte:fragment slot=\"sub-menu\"> <Menu.SubMenu> <Menu.Button> Overlay <Spacer /> <Text is=\"span\">ICON</Text> </Menu.Button> </Menu.SubMenu> </svelte:fragment> </Menu.Heading> </Menu.Container> AFTER <script> import { Menu, Spacer, Text, } from \"@kahi-ui/framework\"; </script> <Menu.Container> <Menu.Heading variation=\"divider\"> COMPONENTS </Menu.Heading> <Menu.Section> <Menu.Button active> Dot <Spacer /> <Text is=\"span\">ICON</Text> </Menu.Button> <Menu.Button> Ellipsis <Spacer /> <Text is=\"span\">ICON</Text> </Menu.Button> </Menu.Section> <Menu.Heading /> <Menu.Section> <Menu.Button> Overlay <Spacer /> <Text is=\"span\">ICON</Text> </Menu.Button> </Menu.Section> </Menu.Container> <Mosaic> Changed to <Mosaic.Container> To facilitate the new <Mosaic.Item> Component, the Mosaic Component API was turned into a multi-pattern namespace. With the original Component being changed from <Mosaic> to <Mosaic.Container>. BEFORE <script> import {Box, Mosaic} from \"@kahi-ui/framework\"; </script> <Mosaic sizing=\"tiny\" spacing=\"medium\"> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> </Mosaic> AFTER <script> import {Box, Mosaic} from \"@kahi-ui/framework\"; </script> <Mosaic.Container sizing=\"tiny\" spacing=\"medium\"> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> <Box palette=\"alert\" /> </Mosaic.Container> <Pagination href> Implicit Elements Changed to Require Explicit is Property To make Pagination's API consistent with the rest of the Framework's multi-element Components, is is now required to render the other elements besides <button>. BEFORE <script> import {Pagination} from \"@kahi-ui/framework\"; </script> <Pagination href={\"/path/to/list?page=${page}\"} pages={10} value={5} > This is an ANCHOR Button! </Pagination> AFTER <script> import {Pagination} from \"@kahi-ui/framework\"; </script> <Pagination is=\"a\" href={\"/path/to/list?page=${page}\"} pages={10} value={5} > This is an ANCHOR Button! </Pagination> <Spinner> Removed in Favor of <Progress shape=\"circle\"> Due to <Progress shape=\"circle\"> new indeterminate appearance, and because Progress didn't exist when Spinner was originally added. It is now being removed due to duplicate functionality. BEFORE <script> import {Spinner} from \"@kahi-ui/framework\"; </script> <Spinner palette=\"accent\" /> AFTER <script> import {Progress} from \"@kahi-ui/framework\"; </script> <Progress shape=\"circle\" palette=\"accent\" /> <Stack> Changed to <Stack.Container> To facilitate the new <Stack.Item> Component, the Stack Component API was turned into a multi-pattern namespace. With the original Component being changed from <Stack> to <Stack.Container>. BEFORE <script> import {Box, Stack} from \"@kahi-ui/framework\"; </script> <Stack sizing=\"tiny\" spacing=\"medium\"> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> </Stack> AFTER <script> import {Box, Stack} from \"@kahi-ui/framework\"; </script> <Stack.Container sizing=\"tiny\" spacing=\"medium\"> <Box palette=\"alert\" /> <Box palette=\"affirmative\" /> <Box palette=\"negative\" /> </Stack.Container> <Text is=\"kbd\"> Removed in Favor of <Kbd> Since the <kbd> element renders as its own view, rather than strictly acting like a text modifier. It migrated to being its own <Kbd> Component. BEFORE <script> import {Text} from \"@kahi-ui/framework\"; </script> <Text is=\"kbd\">CTRL+C</Text> AFTER <script> import {Kbd} from \"@kahi-ui/framework\"; </script> <Kbd>CTRL+C</Kbd> <TextInput characters lines> Properties Consolidated into <TextInput span_x span_y> Properties To be consistent with later additions to the Component APIs, both the characters and lines properties were renamed to the span_x and span_y properties respectively. With otherwise no additional changes. BEFORE <script> import {TextInput} from \"@kahi-ui/framework\"; </script> <TextInput is=\"textarea\" characters={5} lines={3} /> AFTER <script> import {TextInput} from \"@kahi-ui/framework\"; </script> <TextInput is=\"textarea\" span_x={5} span_y={3} /> <TextInput max_length min_length> Properties Consolidated into <TextInput max min> Properties To be consistent with later additions to the Component APIs, both the max_length and min_length properties were renamed to the max and min properties respectively. With otherwise no additional changes. BEFORE <script> import {TextInput} from \"@kahi-ui/framework\"; </script> <TextInput max_length={10} min_length={3} /> AFTER <script> import {TextInput} from \"@kahi-ui/framework\"; </script> <TextInput max={10} min={3} /> <TimePicker highlight> Property Now Accepts string[] Instead of string Both highlight property was updated to accept string arrays instead of singular strings. Allowing for multiple timestamps to be used. BEFORE <script> import {TimePicker} from \"@kahi-ui/framework\"; </script> <TimePicker highlight=\"15:00:00\" /> AFTER <script> import {TimePicker} from \"@kahi-ui/framework\"; </script> <TimePicker highlight={[\"15:00:00\"]} /> <Wave> Removed in Favor of <Ellipsis> v0.6.0 introduces new customizable functionality to the Ellipsis Component for rendering synchronized animated content. Which can duplicate the previously what Wave accomplished. BEFORE <script> import {Wave} from \"@kahi-ui/framework\"; </script> <Wave /> AFTER <script> import {Dot, Ellipsis} from \"@kahi-ui/framework\"; </script> <Ellipsis animation=\"bounce\" iterations={5}> <Dot /> </Ellipsis> "},{"identifier":"/docs/navigation/anchor","title":"Anchor","text":"Anchor NOTE : Introduced feature in v0.2.0. Anchor are used for navigating from page to page, or to external websites. <script> import {Anchor} from \"@kahi-ui/framework\"; </script> <Anchor href=\"https://google.com\" target=\"_blank\" rel=\"noopener noreferrer\" > Goto google.com </Anchor> Imports <script> import {Anchor} from \"@kahi-ui/framework\"; </script> Internal Navigation When navigating only to an internal Web Application route, you can just set href property with no other properties. <script> import {Anchor} from \"@kahi-ui/framework\"; </script> <Anchor href=\"#\">Kahi UI</Anchor> External Navigation When navigating to external links, for security purposes it's recommended to set rel=\"noopener\" to prevent Window.opener from being set on the newly opened page. And also to set rel=\"noreferrer\" for privacy purposes , to prevent the Browser from sending the Referer header to the new page. <script> import {Anchor} from \"@kahi-ui/framework\"; </script> <Anchor href=\"https://google.com\" target=\"_blank\" rel=\"noopener noreferrer\" > Goto google.com </Anchor> States You can control the state of the Anchor via the disabled property. <script> import {Anchor} from \"@kahi-ui/framework\"; </script> <Anchor href=\"https://google.com\" target=\"_blank\" rel=\"noopener noreferrer\" > Goto google.com DEFAULT </Anchor> <Anchor href=\"https://google.com\" target=\"_blank\" rel=\"noopener noreferrer\" disabled > Goto google.com DISABLED </Anchor> Palette NOTE : Introduced feature in v0.4.3. You can change the color palette of the Anchor via the palette property. <script> import {Anchor, Stack} from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <Anchor href=\"https://google.com\" target=\"_blank\" rel=\"noopener noreferrer\" > Goto google.com DEFAULT </Anchor> <Anchor href=\"https://google.com\" target=\"_blank\" rel=\"noopener noreferrer\" palette=\"accent\" > Goto google.com ACCENT </Anchor> <Anchor href=\"https://google.com\" target=\"_blank\" rel=\"noopener noreferrer\" palette=\"neutral\" > Goto google.com NEUTRAL </Anchor> <Anchor href=\"https://google.com\" target=\"_blank\" rel=\"noopener noreferrer\" palette=\"dark\" > Goto google.com DARK </Anchor> <Anchor href=\"https://google.com\" target=\"_blank\" rel=\"noopener noreferrer\" palette=\"light\" > Goto google.com LIGHT </Anchor> <Anchor href=\"https://google.com\" target=\"_blank\" rel=\"noopener noreferrer\" palette=\"alert\" > Goto google.com ALERT </Anchor> <Anchor href=\"https://google.com\" target=\"_blank\" rel=\"noopener noreferrer\" palette=\"affirmative\" > Goto google.com AFFIRMATIVE </Anchor> <Anchor href=\"https://google.com\" target=\"_blank\" rel=\"noopener noreferrer\" palette=\"informative\" > Goto google.com INFORMATIVE </Anchor> <Anchor href=\"https://google.com\" target=\"_blank\" rel=\"noopener noreferrer\" palette=\"negative\" > Goto google.com NEGATIVE </Anchor> </Stack.Container> "},{"identifier":"/docs/navigation/aside","title":"Aside","text":"Aside NOTE : Introduced feature in v0.2.0. Aside is used to vertically present the end-user with actions and links that can be accessed anytime on the Web Application. <script> import { Anchor, Aside, Divider, Menu, Spacer, Text, } from \"@kahi-ui/framework\"; </script> <Aside.Container palette=\"dark\" max_width=\"content-max\" height=\"100\" > <Aside.Header> <Anchor href=\"#\">Kahi UI</Anchor> <Divider /> </Aside.Header> <Aside.Section> <Menu.Container> <Menu.Heading>DISPLAY</Menu.Heading> <Menu.Button> Badge <Spacer /> <span>ICON</span> </Menu.Button> <Menu.Heading>FEEDBACK</Menu.Heading> <Menu.Button> Dot <Spacer /> <span>ICON</span> </Menu.Button> <Menu.Button active> Spinner <Spacer /> <span>ICON</span> </Menu.Button> </Menu.Container> </Aside.Section> <Aside.Footer> <Anchor href=\"#\"> <Text is=\"small\">v0.6.0</Text> </Anchor> </Aside.Footer> </Aside.Container> Imports <script> import {Aside} from \"@kahi-ui/framework\"; const {Container, Footer, Header, Section} = Aside; </script> Palette You can change the color palette of the Aside via the palette property. <script> import { Anchor, Aside, Divider, Menu, Mosaic, Spacer, Text, } from \"@kahi-ui/framework\"; </script> <Mosaic.Container sizing=\"medium\" spacing=\"medium\"> <Aside.Container> <Aside.Header> <Anchor href=\"#\">Kahi UI</Anchor> <Divider /> </Aside.Header> <Aside.Section> <Menu.Container> <Menu.Heading>FEEDBACK</Menu.Heading> <Menu.Button> Dot <Spacer /> <span>ICON</span> </Menu.Button> <Menu.Button active> Spinner <Spacer /> <span>ICON</span> </Menu.Button> </Menu.Container> </Aside.Section> <Aside.Footer>DEFAULT</Aside.Footer> </Aside.Container> <Aside.Container palette=\"accent\"> <Aside.Header> <Anchor href=\"#\">Kahi UI</Anchor> <Divider /> </Aside.Header> <Aside.Section> <Menu.Container> <Menu.Heading>FEEDBACK</Menu.Heading> <Menu.Button> Dot <Spacer /> <span>ICON</span> </Menu.Button> <Menu.Button active> Spinner <Spacer /> <span>ICON</span> </Menu.Button> </Menu.Container> </Aside.Section> <Aside.Footer>ACCENT</Aside.Footer> </Aside.Container> <Aside.Container palette=\"neutral\"> <Aside.Header> <Anchor href=\"#\">Kahi UI</Anchor> <Divider /> </Aside.Header> <Aside.Section> <Menu.Container> <Menu.Heading>FEEDBACK</Menu.Heading> <Menu.Button> Dot <Spacer /> <span>ICON</span> </Menu.Button> <Menu.Button active> Spinner <Spacer /> <span>ICON</span> </Menu.Button> </Menu.Container> </Aside.Section> <Aside.Footer>NEUTRAL</Aside.Footer> </Aside.Container> <Aside.Container palette=\"dark\"> <Aside.Header> <Anchor href=\"#\">Kahi UI</Anchor> <Divider /> </Aside.Header> <Aside.Section> <Menu.Container> <Menu.Heading>FEEDBACK</Menu.Heading> <Menu.Button> Dot <Spacer /> <span>ICON</span> </Menu.Button> <Menu.Button active> Spinner <Spacer /> <span>ICON</span> </Menu.Button> </Menu.Container> </Aside.Section> <Aside.Footer>DARK</Aside.Footer> </Aside.Container> <Aside.Container palette=\"light\"> <Aside.Header> <Anchor href=\"#\">Kahi UI</Anchor> <Divider /> </Aside.Header> <Aside.Section> <Menu.Container> <Menu.Heading>FEEDBACK</Menu.Heading> <Menu.Button> Dot <Spacer /> <span>ICON</span> </Menu.Button> <Menu.Button active> Spinner <Spacer /> <span>ICON</span> </Menu.Button> </Menu.Container> </Aside.Section> <Aside.Footer>LIGHT</Aside.Footer> </Aside.Container> <Aside.Container palette=\"alert\"> <Aside.Header> <Anchor href=\"#\">Kahi UI</Anchor> <Divider /> </Aside.Header> <Aside.Section> <Menu.Container> <Menu.Heading>FEEDBACK</Menu.Heading> <Menu.Button> Dot <Spacer /> <span>ICON</span> </Menu.Button> <Menu.Button active> Spinner <Spacer /> <span>ICON</span> </Menu.Button> </Menu.Container> </Aside.Section> <Aside.Footer>ALERT</Aside.Footer> </Aside.Container> <Aside.Container palette=\"affirmative\"> <Aside.Header> <Anchor href=\"#\">Kahi UI</Anchor> <Divider /> </Aside.Header> <Aside.Section> <Menu.Container> <Menu.Heading>FEEDBACK</Menu.Heading> <Menu.Button> Dot <Spacer /> <span>ICON</span> </Menu.Button> <Menu.Button active> Spinner <Spacer /> <span>ICON</span> </Menu.Button> </Menu.Container> </Aside.Section> <Aside.Footer>AFFIRMATIVE</Aside.Footer> </Aside.Container> <Aside.Container palette=\"informative\"> <Aside.Header> <Anchor href=\"#\">Kahi UI</Anchor> <Divider /> </Aside.Header> <Aside.Section> <Menu.Container> <Menu.Heading>FEEDBACK</Menu.Heading> <Menu.Button> Dot <Spacer /> <span>ICON</span> </Menu.Button> <Menu.Button active> Spinner <Spacer /> <span>ICON</span> </Menu.Button> </Menu.Container> </Aside.Section> <Aside.Footer>INFORMATIVE</Aside.Footer> </Aside.Container> <Aside.Container palette=\"negative\"> <Aside.Header> <Anchor href=\"#\">Kahi UI</Anchor> <Divider /> </Aside.Header> <Aside.Section> <Menu.Container> <Menu.Heading>FEEDBACK</Menu.Heading> <Menu.Button> Dot <Spacer /> <span>ICON</span> </Menu.Button> <Menu.Button active> Spinner <Spacer /> <span>ICON</span> </Menu.Button> </Menu.Container> </Aside.Section> <Aside.Footer>NEGATIVE</Aside.Footer> </Aside.Container> </Mosaic.Container> Placement IMPORTANT : The placement property does NOT affect how it will appear in your layout. You need to manually handle that. You can adjust which side the content divider border will appear via the placement property. <script> import { Anchor, Aside, Divider, Menu, Spacer, Text, } from \"@kahi-ui/framework\"; </script> <Aside.Container placement=\"right\" palette=\"inverse\" max_width=\"content-max\" height=\"100\" > <Aside.Header> <Anchor href=\"#\">Kahi UI</Anchor> <Divider /> </Aside.Header> <Aside.Section> <Menu.Container> <Menu.Heading>FEEDBACK</Menu.Heading> <Menu.Button> Dot <Spacer /> <span>ICON</span> </Menu.Button> <Menu.Button active> Spinner <Spacer /> <span>ICON</span> </Menu.Button> </Menu.Container> </Aside.Section> <Aside.Footer> <Anchor href=\"#\"> <Text is=\"small\">v0.6.0</Text> </Anchor> </Aside.Footer> </Aside.Container> Collapsing USAGE : REPL does not support viewport values, resize your Browser to observe this feature. While Aside does not have built-in collapsing, the Framework provides the primitives for you to build collapsable interfaces. Via Components like Overlay and features like contents . <script> import { Anchor, Aside, Button, Divider, Menu, Position, Overlay, Spacer, Text, } from \"@kahi-ui/framework\"; </script> <Position variation=\"action\" alignment_x=\"left\" hidden={[\"desktop\", \"widescreen\"]} > <Button is=\"label\" for=\"aside-collapsing\"> + </Button> </Position> <Overlay.Container logic_id=\"aside-collapsing\" dismissible > <Overlay.Backdrop hidden={[\"desktop\", \"widescreen\"]} /> <Overlay.Section contents={[\"desktop\", \"widescreen\"]} animation=\"slide\" direction=\"left\" alignment_x=\"left\" > <Aside.Container palette=\"inverse\" max_width=\"content-max\" height=\"100\" > <Aside.Header> <Anchor href=\"#\">Kahi UI</Anchor> <Divider /> </Aside.Header> <Aside.Section> <Menu.Container> <Menu.Heading> DISPLAY </Menu.Heading> <Menu.Button> Badge <Spacer /> <span>ICON</span> </Menu.Button> <Menu.Heading> FEEDBACK </Menu.Heading> <Menu.Button> Dot <Spacer /> <span>ICON</span> </Menu.Button> <Menu.Button active> Spinner <Spacer /> <span>ICON</span> </Menu.Button> </Menu.Container> </Aside.Section> <Aside.Footer> <Anchor href=\"#\"> <Text is=\"small\">v0.6.0</Text> </Anchor> </Aside.Footer> <Position variation={[\"container\", \"action\"]} hidden={[\"desktop\", \"widescreen\"]} > <Overlay.Button variation=\"clear\"> - </Overlay.Button> </Position> </Aside.Container> </Overlay.Section> </Overlay.Container> "},{"identifier":"/docs/navigation/breadcrumb","title":"Breadcrumb","text":"Breadcrumb NOTE : Introduced feature in v0.2.0. Breadcrumb is typically used to render a series of links with separators. With the each link left of the right-most a state in the end-user's navigation history. Or, a route hierarchy of the Web Application. e.g. directory paths <script> import {Breadcrumb} from \"@kahi-ui/framework\"; </script> <Breadcrumb.Container> <Breadcrumb.Anchor href=\"#\"> home </Breadcrumb.Anchor> <Breadcrumb.Anchor href=\"#\"> pictures </Breadcrumb.Anchor> <Breadcrumb.Anchor href=\"#\" active> IMG_20191123_121131.jpg </Breadcrumb.Anchor> </Breadcrumb.Container> Imports <script> import {Breadcrumb} from \"@kahi-ui/framework\"; const { Container, Anchor, Button, Group, Separator, } = Breadcrumb; </script> Separator You can alter the separator between items rendered via the separator property. <script> import {Breadcrumb} from \"@kahi-ui/framework\"; </script> <Breadcrumb.Container separator=\">\"> <Breadcrumb.Anchor href=\"#\"> Home </Breadcrumb.Anchor> <Breadcrumb.Anchor href=\"#\"> Contacts </Breadcrumb.Anchor> <Breadcrumb.Anchor href=\"#\" active> John Doe </Breadcrumb.Anchor> </Breadcrumb.Container> Palette NOTE : Introduced feature in v0.6.0. You can change the color palette of the Breadcrumb.Anchor / Breadcrumb.Button Components via the palette property. <script> import { Breadcrumb, Stack, } from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <Breadcrumb.Container> <Breadcrumb.Anchor href=\"#\"> Home </Breadcrumb.Anchor> <Breadcrumb.Anchor href=\"#\"> Contacts </Breadcrumb.Anchor> <Breadcrumb.Anchor href=\"#\" active> DEFAULT </Breadcrumb.Anchor> </Breadcrumb.Container> <Breadcrumb.Container palette=\"accent\"> <Breadcrumb.Anchor href=\"#\"> Home </Breadcrumb.Anchor> <Breadcrumb.Anchor href=\"#\"> Contacts </Breadcrumb.Anchor> <Breadcrumb.Anchor href=\"#\" active> ACCENT </Breadcrumb.Anchor> </Breadcrumb.Container> <Breadcrumb.Container palette=\"neutral\"> <Breadcrumb.Anchor href=\"#\"> Home </Breadcrumb.Anchor> <Breadcrumb.Anchor href=\"#\"> Contacts </Breadcrumb.Anchor> <Breadcrumb.Anchor href=\"#\" active> NEUTRAL </Breadcrumb.Anchor> </Breadcrumb.Container> <Breadcrumb.Container palette=\"dark\"> <Breadcrumb.Anchor href=\"#\"> Home </Breadcrumb.Anchor> <Breadcrumb.Anchor href=\"#\"> Contacts </Breadcrumb.Anchor> <Breadcrumb.Anchor href=\"#\" active> DARK </Breadcrumb.Anchor> </Breadcrumb.Container> <Breadcrumb.Container palette=\"light\"> <Breadcrumb.Anchor href=\"#\"> Home </Breadcrumb.Anchor> <Breadcrumb.Anchor href=\"#\"> Contacts </Breadcrumb.Anchor> <Breadcrumb.Anchor href=\"#\" active> LIGHT </Breadcrumb.Anchor> </Breadcrumb.Container> <Breadcrumb.Container palette=\"affirmative\"> <Breadcrumb.Anchor href=\"#\"> Home </Breadcrumb.Anchor> <Breadcrumb.Anchor href=\"#\"> Contacts </Breadcrumb.Anchor> <Breadcrumb.Anchor href=\"#\" active> AFFIRMATIVE </Breadcrumb.Anchor> </Breadcrumb.Container> <Breadcrumb.Container palette=\"informative\"> <Breadcrumb.Anchor href=\"#\"> Home </Breadcrumb.Anchor> <Breadcrumb.Anchor href=\"#\"> Contacts </Breadcrumb.Anchor> <Breadcrumb.Anchor href=\"#\" active> INFORMATIVE </Breadcrumb.Anchor> </Breadcrumb.Container> <Breadcrumb.Container palette=\"negative\"> <Breadcrumb.Anchor href=\"#\"> Home </Breadcrumb.Anchor> <Breadcrumb.Anchor href=\"#\"> Contacts </Breadcrumb.Anchor> <Breadcrumb.Anchor href=\"#\" active> NEGATIVE </Breadcrumb.Anchor> </Breadcrumb.Container> </Stack.Container> Elements NOTE : Introduced feature in v0.6.0. You can render Breadcrumb items as <button> HTML tags by using <Breadcrumb.Button>, which is useful if your navigation doesn't work via URLs. <script> import { Breadcrumb, Stack, } from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <Breadcrumb.Container> <Breadcrumb.Anchor href=\"#\"> Home </Breadcrumb.Anchor> <Breadcrumb.Anchor href=\"#\"> Contacts </Breadcrumb.Anchor> <Breadcrumb.Anchor href=\"#\" active> Anchor </Breadcrumb.Anchor> </Breadcrumb.Container> <Breadcrumb.Container> <Breadcrumb.Button>Home</Breadcrumb.Button> <Breadcrumb.Button>Contacts</Breadcrumb.Button> <Breadcrumb.Button active> Button </Breadcrumb.Button> </Breadcrumb.Container> </Stack.Container> "},{"identifier":"/docs/navigation/menu","title":"Menu","text":"Menu NOTE : Introduced feature in v0.2.2. Menu renders a nestable list of actionable buttons and links. Typically used in context menus or used as the main content body of Aside . <script> import { Menu, Spacer, Text, } from \"@kahi-ui/framework\"; </script> <Menu.Container> <Menu.Button> Copy <Spacer /> <Text is=\"small\">CTRL+C</Text> </Menu.Button> <Menu.Button> Cut <Spacer /> <Text is=\"small\">CTRL+X</Text> </Menu.Button> <Menu.Heading /> <Menu.Button> Delete <Spacer /> <Text is=\"small\">DEL</Text> </Menu.Button> </Menu.Container> Imports <script> import {Menu} from \"@kahi-ui/framework\"; const { Container, Anchor, Button, Heading, Label, Section, } = Menu; </script> Orientation NOTE : By passing an array, you can set responsive values . e.g. orientation={[\"tablet:horizontal\", \"mobile:horizontal\"]} IMPORTANT : You should never use sub menus whenever using horizontal Menu.Container Components. You can alter the orientation of how the Menu.Container lays out the children. <script> import {Menu} from \"@kahi-ui/framework\"; </script> <Menu.Container orientation=\"horizontal\"> <Menu.Button>Documentation</Menu.Button> <Menu.Button>Github</Menu.Button> <Menu.Button>Releases</Menu.Button> </Menu.Container> Sections WARNING : This feature was renamed from <Menu.SubMenu> to <Menu.Section> in v0.6.0 . WARNING : This feature received a breaking change in v0.6.0 . You can nest more menus via the <Menu.Section> Component. <script> import { Box, Menu, Spacer, Text, } from \"@kahi-ui/framework\"; </script> <Box palette=\"negative\" padding=\"medium\"> <Menu.Container> <Menu.Heading>FEEDBACK</Menu.Heading> <Menu.Section> <Menu.Button active> Dot <Spacer /> <Text is=\"span\">ICON</Text> </Menu.Button> <Menu.Button> Spinner <Spacer /> <Text is=\"span\">ICON</Text> </Menu.Button> </Menu.Section> <Menu.Heading>OVERLAYS</Menu.Heading> <Menu.Section> <Menu.Button> Overlay <Spacer /> <Text is=\"span\">ICON</Text> </Menu.Button> </Menu.Section> </Menu.Container> </Box> Text Divider WARNING : This feature was renamed from <Menu.Divider>...</Menu.Divider> to <Menu.Heading variation=\"divider\">...</Menu.Heading> in v0.6.0 . You can alter <Menu.Heading> to render dividers via the variation property. <script> import { Box, Menu, Spacer, Text, } from \"@kahi-ui/framework\"; </script> <Box palette=\"negative\" padding=\"medium\"> <Menu.Container> <Menu.Heading variation=\"divider\"> FEEDBACK </Menu.Heading> <Menu.Section> <Menu.Button active> Dot <Spacer /> <Text is=\"span\">ICON</Text> </Menu.Button> <Menu.Button> Spinner <Spacer /> <Text is=\"span\">ICON</Text> </Menu.Button> </Menu.Section> </Menu.Container> </Box> Palette You can change the color palette of the Menu.Anchor, Menu.Button, and Menu.Label Components via the palette property. <script> import { Menu, Mosaic, Spacer, } from \"@kahi-ui/framework\"; </script> <Mosaic.Container sizing=\"medium\" spacing=\"medium\"> <Menu.Container> <Menu.Heading>DEFAULT</Menu.Heading> <Menu.Section> <Menu.Button active> Dot <Spacer /> <span>ICON</span> </Menu.Button> <Menu.Button> Spinner <Spacer /> <span>ICON</span> </Menu.Button> </Menu.Section> </Menu.Container> <Menu.Container> <Menu.Heading>ACCENT</Menu.Heading> <Menu.Section> <Menu.Button palette=\"accent\" active> Dot <Spacer /> <span>ICON</span> </Menu.Button> <Menu.Button palette=\"accent\"> Spinner <Spacer /> <span>ICON</span> </Menu.Button> </Menu.Section> </Menu.Container> <Menu.Container> <Menu.Heading>NEUTRAL</Menu.Heading> <Menu.Section> <Menu.Button palette=\"neutral\" active> Dot <Spacer /> <span>ICON</span> </Menu.Button> <Menu.Button palette=\"neutral\"> Spinner <Spacer /> <span>ICON</span> </Menu.Button> </Menu.Section> </Menu.Container> <Menu.Container> <Menu.Heading>DARK</Menu.Heading> <Menu.Section> <Menu.Button palette=\"dark\" active> Dot <Spacer /> <span>ICON</span> </Menu.Button> <Menu.Button palette=\"dark\"> Spinner <Spacer /> <span>ICON</span> </Menu.Button> </Menu.Section> </Menu.Container> <Menu.Container> <Menu.Heading>LIGHT</Menu.Heading> <Menu.Section> <Menu.Button palette=\"light\" active> Dot <Spacer /> <span>ICON</span> </Menu.Button> <Menu.Button palette=\"light\"> Spinner <Spacer /> <span>ICON</span> </Menu.Button> </Menu.Section> </Menu.Container> <Menu.Container> <Menu.Heading>ALERT</Menu.Heading> <Menu.Section> <Menu.Button palette=\"alert\" active> Dot <Spacer /> <span>ICON</span> </Menu.Button> <Menu.Button palette=\"alert\"> Spinner <Spacer /> <span>ICON</span> </Menu.Button> </Menu.Section> </Menu.Container> <Menu.Container> <Menu.Heading>AFFIRMATIVE</Menu.Heading> <Menu.Section> <Menu.Button palette=\"affirmative\" active> Dot <Spacer /> <span>ICON</span> </Menu.Button> <Menu.Button palette=\"affirmative\"> Spinner <Spacer /> <span>ICON</span> </Menu.Button> </Menu.Section> </Menu.Container> <Menu.Container> <Menu.Heading>INFORMATIVE</Menu.Heading> <Menu.Section> <Menu.Button palette=\"informative\" active> Dot <Spacer /> <span>ICON</span> </Menu.Button> <Menu.Button palette=\"informative\"> Spinner <Spacer /> <span>ICON</span> </Menu.Button> </Menu.Section> </Menu.Container> <Menu.Container> <Menu.Heading>NEGATIVE</Menu.Heading> <Menu.Section> <Menu.Button palette=\"negative\" active> Dot <Spacer /> <span>ICON</span> </Menu.Button> <Menu.Button palette=\"negative\"> Spinner <Spacer /> <span>ICON</span> </Menu.Button> </Menu.Section> </Menu.Container> </Mosaic.Container> Sizing NOTE : By passing an array, you can set responsive values . e.g. sizing={[\"tiny\", \"tablet:medium\", \"mobile:medium\"]} You can change the sizing / spacing look and feel of the Menu.Container via the sizing property. <script> import { Menu, Mosaic, Spacer, } from \"@kahi-ui/framework\"; </script> <Mosaic.Container sizing=\"medium\" spacing=\"medium\"> <Menu.Container> <Menu.Heading>DEFAULT</Menu.Heading> <Menu.Section> <Menu.Button active> Dot <Spacer /> <span>ICON</span> </Menu.Button> <Menu.Button> Spinner <Spacer /> <span>ICON</span> </Menu.Button> </Menu.Section> </Menu.Container> <Menu.Container sizing=\"nano\"> <Menu.Heading>NANO</Menu.Heading> <Menu.Section> <Menu.Button active> Dot <Spacer /> <span>ICON</span> </Menu.Button> <Menu.Button> Spinner <Spacer /> <span>ICON</span> </Menu.Button> </Menu.Section> </Menu.Container> <Menu.Container sizing=\"tiny\"> <Menu.Heading>TINY</Menu.Heading> <Menu.Section> <Menu.Button active> Dot <Spacer /> <span>ICON</span> </Menu.Button> <Menu.Button> Spinner <Spacer /> <span>ICON</span> </Menu.Button> </Menu.Section> </Menu.Container> <Menu.Container sizing=\"small\"> <Menu.Heading>SMALL</Menu.Heading> <Menu.Section> <Menu.Button active> Dot <Spacer /> <span>ICON</span> </Menu.Button> <Menu.Button> Spinner <Spacer /> <span>ICON</span> </Menu.Button> </Menu.Section> </Menu.Container> <Menu.Container sizing=\"medium\"> <Menu.Heading>MEDIUM</Menu.Heading> <Menu.Section> <Menu.Button active> Dot <Spacer /> <span>ICON</span> </Menu.Button> <Menu.Button> Spinner <Spacer /> <span>ICON</span> </Menu.Button> </Menu.Section> </Menu.Container> <Menu.Container sizing=\"large\"> <Menu.Heading>LARGE</Menu.Heading> <Menu.Section> <Menu.Button active> Dot <Spacer /> <span>ICON</span> </Menu.Button> <Menu.Button> Spinner <Spacer /> <span>ICON</span> </Menu.Button> </Menu.Section> </Menu.Container> <Menu.Container sizing=\"huge\"> <Menu.Heading>HUGE</Menu.Heading> <Menu.Section> <Menu.Button active> Dot <Spacer /> <span>ICON</span> </Menu.Button> <Menu.Button> Spinner <Spacer /> <span>ICON</span> </Menu.Button> </Menu.Section> </Menu.Container> <Menu.Container sizing=\"massive\"> <Menu.Heading>MASSIVE</Menu.Heading> <Menu.Section> <Menu.Button active> Dot <Spacer /> <span>ICON</span> </Menu.Button> <Menu.Button> Spinner <Spacer /> <span>ICON</span> </Menu.Button> </Menu.Section> </Menu.Container> </Mosaic.Container> "},{"identifier":"/docs/navigation/omni","title":"Omni","text":"Omni NOTE : Introduced feature in v0.2.0. Omni is used to horizontally present the end-user with actions and links that can be accessed anytime on the Web Application. <script> import { Anchor, Divider, Menu, Omni, Text, } from \"@kahi-ui/framework\"; </script> <Omni.Container palette=\"dark\" width=\"100\"> <Omni.Header> <Anchor href=\"#\">Kahi UI</Anchor> <Divider orientation=\"vertical\" /> <Anchor href=\"#\"> <Text is=\"small\">v0.6.0</Text> </Anchor> </Omni.Header> <Omni.Section> <Menu.Container orientation=\"horizontal\" sizing=\"tiny\" > <Menu.Button active>Docs</Menu.Button> <Menu.Button>Playground</Menu.Button> <Menu.Button>Storybook</Menu.Button> </Menu.Container> </Omni.Section> <Omni.Footer> <Menu.Container orientation=\"horizontal\" sizing=\"tiny\" > <Menu.Button>GitHub</Menu.Button> </Menu.Container> </Omni.Footer> </Omni.Container> Imports <script> import {Omni} from \"@kahi-ui/framework\"; const {Container, Footer, Header, Section} = Omni; </script> Palette You can change the color palette of the Omni via the palette property. <script> import { Anchor, Divider, Omni, Stack, } from \"@kahi-ui/framework\"; </script> <Stack.Container spacing=\"medium\"> <Omni.Container width=\"100\"> <Omni.Header> <Anchor href=\"#\">Kahi UI</Anchor> <Divider orientation=\"vertical\" /> DEFAULT </Omni.Header> </Omni.Container> <Omni.Container palette=\"accent\" width=\"100\"> <Omni.Header> <Anchor href=\"#\">Kahi UI</Anchor> <Divider orientation=\"vertical\" /> ACCENT </Omni.Header> </Omni.Container> <Omni.Container palette=\"neutral\" width=\"100\"> <Omni.Header> <Anchor href=\"#\">Kahi UI</Anchor> <Divider orientation=\"vertical\" /> NEUTRAL </Omni.Header> </Omni.Container> <Omni.Container palette=\"dark\" width=\"100\"> <Omni.Header> <Anchor href=\"#\">Kahi UI</Anchor> <Divider orientation=\"vertical\" /> DARK </Omni.Header> </Omni.Container> <Omni.Container palette=\"light\" width=\"100\"> <Omni.Header> <Anchor href=\"#\">Kahi UI</Anchor> <Divider orientation=\"vertical\" /> LIGHT </Omni.Header> </Omni.Container> <Omni.Container palette=\"alert\" width=\"100\"> <Omni.Header> <Anchor href=\"#\">Kahi UI</Anchor> <Divider orientation=\"vertical\" /> ALERT </Omni.Header> </Omni.Container> <Omni.Container palette=\"affirmative\" width=\"100\"> <Omni.Header> <Anchor href=\"#\">Kahi UI</Anchor> <Divider orientation=\"vertical\" /> AFFIRMATIVE </Omni.Header> </Omni.Container> <Omni.Container palette=\"informative\" width=\"100\"> <Omni.Header> <Anchor href=\"#\">Kahi UI</Anchor> <Divider orientation=\"vertical\" /> INFORMATIVE </Omni.Header> </Omni.Container> <Omni.Container palette=\"negative\" width=\"100\"> <Omni.Header> <Anchor href=\"#\">Kahi UI</Anchor> <Divider orientation=\"vertical\" /> NEGATIVE </Omni.Header> </Omni.Container> </Stack.Container> Placement IMPORTANT : The placement property does NOT affect how it will appear in your layout. You need to manually handle that. You can adjust which side the content divider border will appear via the placement property. <script> import { Anchor, Divider, Omni, Text, } from \"@kahi-ui/framework\"; </script> <Omni.Container placement=\"bottom\" palette=\"inverse\" width=\"100\" > <Omni.Header> <Anchor href=\"#\">Kahi UI</Anchor> <Divider orientation=\"vertical\" /> <Anchor href=\"#\"> <Text is=\"small\">v0.6.0</Text> </Anchor> </Omni.Header> </Omni.Container> Collapsing USAGE : REPL does not support viewport values, resize your Browser to observe this feature. While Omni does not have built-in collapsing, the Framework provides the primitives for you to build collapsable interfaces. Via Components like Popover and features like hidden . <script> import { Anchor, Box, Divider, Menu, Omni, Popover, Text, } from \"@kahi-ui/framework\"; </script> <Omni.Container palette=\"inverse\" width=\"100\"> <Omni.Header> <Anchor href=\"#\">Kahi UI</Anchor> <Divider orientation=\"vertical\" /> <Anchor href=\"#\"> <Text is=\"small\">v0.6.0</Text> </Anchor> </Omni.Header> <Omni.Section hidden={[\"mobile\", \"tablet\"]}> <Menu.Container orientation=\"horizontal\" sizing=\"tiny\" > <Menu.Button active>Docs</Menu.Button> <Menu.Button>Playground</Menu.Button> <Menu.Button>Storybook</Menu.Button> </Menu.Container> </Omni.Section> <Omni.Footer> <Menu.Container hidden={[\"mobile\", \"tablet\"]} orientation=\"horizontal\" sizing=\"tiny\" > <Menu.Button>GitHub</Menu.Button> </Menu.Container> <Popover.Container hidden={[\"desktop\", \"widescreen\"]} logic_id=\"omni-collapsing\" dismissible > <Popover.Button palette=\"light\" variation=\"clear\" > + </Popover.Button> <Popover.Section alignment_x=\"left\" spacing=\"small\" > <Box variation=\"borders\" elevation=\"medium\" padding=\"medium\" radius=\"tiny\" > <Menu.Container sizing=\"tiny\"> <Menu.Button active> Docs </Menu.Button> <Menu.Button> Playground </Menu.Button> <Menu.Button> Storybook </Menu.Button> <Menu.Button> GitHub </Menu.Button> </Menu.Container> </Box> </Popover.Section> </Popover.Container> </Omni.Footer> </Omni.Container> "},{"identifier":"/docs/overlays/backdrop","title":"Backdrop","text":"Backdrop Backdrop stretches across its parent element, providing a dimmed background that sits under sibling content. Useful for things like prompts. <script> import {Backdrop} from \"@kahi-ui/framework\"; </script> Hello World! <Backdrop /> Imports <script> import {Backdrop} from \"@kahi-ui/framework\"; </script> Palette NOTE : Introduced feature in v0.6.0. You can change the color palette of the Backdrop via the palette property. <script> import { Backdrop, Button, Position, Stack, } from \"@kahi-ui/framework\"; let palette = undefined; </script> Hello World! <Backdrop {palette} /> <Position variation=\"action\" alignment_x=\"left\"> <Stack.Container orientation=\"horizontal\" alignment_x=\"left\" spacing=\"small\" variation=\"wrap\" max_width=\"prose\" margin_left=\"auto\" > <Button palette=\"inverse\" on:click={() => (palette = undefined)} > RESET </Button> <Button palette=\"accent\" on:click={() => (palette = \"accent\")} > ACCENT </Button> <Button palette=\"neutral\" on:click={() => (palette = \"neutral\")} > NEUTRAL </Button> <Button palette=\"dark\" on:click={() => (palette = \"dark\")} > DARK </Button> <Button palette=\"light\" on:click={() => (palette = \"light\")} > LIGHT </Button> <Button palette=\"affirmative\" on:click={() => (palette = \"affirmative\")} > AFFIRMATIVE </Button> <Button palette=\"informative\" on:click={() => (palette = \"informative\")} > INFORMATIVE </Button> <Button palette=\"negative\" on:click={() => (palette = \"negative\")} > NEGATIVE </Button> </Stack.Container> </Position> "},{"identifier":"/docs/overlays/clickable","title":"Clickable","text":"Clickable NOTE : Introduced feature in v0.4.3. Clickable stretches a nested <Clickable.Anchor> / <Clickable.Label> child across its parent element, while surfacing other interactive elements above the overlay. Imports <script> import {Clickable} from \"@kahi-ui/framework\"; const {Container, Anchor, Label} = Clickable; </script> Anchor Use a <Clickable.Anchor> to stretch a clickable <a> across the parent container. <script> import { Badge, Button, Card, Clickable, Spacer, Text, } from \"@kahi-ui/framework\"; </script> <Clickable.Container> <Card.Container style=\"max-width:25rem;\"> <Card.Figure> <img src={IMAGE_BACKGROUND} /> </Card.Figure> <Card.Header> <Clickable.Anchor href=\"#\"> Ocean Rockies </Clickable.Anchor> <Spacer /> <Badge palette=\"affirmative\"> AVAILABLE </Badge> </Card.Header> <Card.Section> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </Card.Section> <Card.Footer> <Button palette=\"accent\"> Book Flight </Button> </Card.Footer> </Card.Container> </Clickable.Container> Label Use a <Clickable.Label> to stretch a clickable <label> across the parent container. <script> import { Clickable, Switch, Text, Tile, } from \"@kahi-ui/framework\"; </script> <Clickable.Container> <Tile.Container width=\"content-max\"> <Tile.Section> <Tile.Header>Remember Login?</Tile.Header> <Text> <Text is=\"small\"> Your session will be saved to your Browser. </Text> </Text> </Tile.Section> <Tile.Footer> <Clickable.Label for=\"clickable-label\"> <Switch palette=\"affirmative\" sizing=\"medium\" /> </Clickable.Label> </Tile.Footer> </Tile.Container> </Clickable.Container> "},{"identifier":"/docs/overlays/overlay","title":"Overlay","text":"Overlay NOTE : Introduced feature in v0.2.4. WARNING : This feature received a breaking change in v0.6.0 . Overlay is typically used for rendering full-screen content over the rest of the page, optionally including a backdrop or being toggleable. <script> import { Button, Card, Code, Overlay, Text, } from \"@kahi-ui/framework\"; </script> <Button is=\"label\" for=\"overlay-preview\" palette=\"accent\" > Open MODAL </Button> <Overlay.Container logic_id=\"overlay-preview\" dismissible > <Overlay.Backdrop /> <Overlay.Section> <Card.Container max_width=\"75\"> <Card.Header>Delete File?</Card.Header> <Card.Section> <Text> Are you sure you want to delete: <Code>important-file.docx</Code>? </Text> </Card.Section> <Card.Footer> <Overlay.Button palette=\"inverse\" variation=\"clear\" > Cancel </Overlay.Button> <Button palette=\"negative\"> Delete </Button> </Card.Footer> </Card.Container> </Overlay.Section> </Overlay.Container> Imports <!-- prettier-ignore --> <script> import {Overlay} from \"@kahi-ui/framework\"; const { Backdrop, Container, Button, Group, Section } = Overlay; </script> Logic ID You can make the Overlay toggleable via the logic_id property, and then referencing that with a Button . Alternatively, <Overlay.Button> can be used while inside a <Overlay.Container> tree, which automatically inherits logic_id via Svelte Context . <script> import { Button, Card, Overlay, } from \"@kahi-ui/framework\"; </script> <Button is=\"label\" for=\"overlay-logic-id\"> Open Overlay </Button> <Overlay.Container logic_id=\"overlay-logic-id\"> <Overlay.Section> <Card.Container palette=\"inverse\" max_width=\"75\" > <Card.Header>Opened Overlay</Card.Header> <Card.Footer> <Overlay.Button palette=\"auto\" variation=\"clear\" > Dismiss </Overlay.Button> </Card.Footer> </Card.Container> </Overlay.Section> </Overlay.Container> Logic State WARNING : This feature is only available in Javascript-enabled clients. You can manually open / close the Overlay via the logic_state property. <script> import { Button, Card, Overlay, } from \"@kahi-ui/framework\"; let logic_state = false; </script> <Button on:click={() => (logic_state = !logic_state)}> Toggle Overlay </Button> <Overlay.Container logic_id=\"overlay-logic-state\" bind:logic_state > <Overlay.Section> <Card.Container palette=\"inverse\" max_width=\"75\" > <Card.Header>TOGGABLE Overlay</Card.Header> <Card.Footer> <Overlay.Button palette=\"auto\" variation=\"clear\" > Dismiss </Overlay.Button> </Card.Footer> </Card.Container> </Overlay.Section> </Overlay.Container> Auto Focus NOTE : Introduced feature in v0.4.13. WARNING : This feature is only available in Javascript-enabled clients. Whenever the Overlay becomes active, focus is moved to the first found focusable element, then restored to the previously focused element when dismissed. <script> import { Button, Card, Overlay, } from \"@kahi-ui/framework\"; </script> <Button is=\"label\" for=\"overlay-auto-focus\"> Open AUTO FOCUSED Overlay </Button> <Overlay.Container logic_id=\"overlay-auto-focus\"> <Overlay.Section> <Card.Container palette=\"inverse\" max_width=\"75\" > <Card.Header> AUTO FOCUSED Overlay </Card.Header> <Card.Footer> <Overlay.Button palette=\"auto\" variation=\"clear\" > Dismiss #1 </Overlay.Button> <Overlay.Button palette=\"auto\" variation=\"clear\" > Dismiss #2 </Overlay.Button> <Overlay.Button palette=\"auto\" variation=\"clear\" > Dismiss #3 </Overlay.Button> <Overlay.Button palette=\"auto\" variation=\"clear\" > Dismiss #4 </Overlay.Button> <Overlay.Button palette=\"auto\" variation=\"clear\" > Dismiss #5 </Overlay.Button> </Card.Footer> </Card.Container> </Overlay.Section> </Overlay.Container> You can customize which element is focused on activation with a reference or CSS Selector, via the focus_target property <script> import { Button, Card, Overlay, } from \"@kahi-ui/framework\"; let target_element; </script> <Button is=\"label\" for=\"overlay-auto-focus-target\"> Open AUTO FOCUSED Overlay </Button> <Overlay.Container logic_id=\"overlay-auto-focus-target\" focus_target={target_element} > <Overlay.Section> <Card.Container palette=\"inverse\" max_width=\"75\" > <Card.Header> AUTO FOCUSED Overlay </Card.Header> <Card.Footer> <Overlay.Button palette=\"auto\" variation=\"clear\" > Dismiss #1 </Overlay.Button> <Overlay.Button palette=\"auto\" variation=\"clear\" > Dismiss #2 </Overlay.Button> <Overlay.Button bind:element={target_element} palette=\"auto\" variation=\"clear\" > Dismiss #3 </Overlay.Button> <Overlay.Button palette=\"auto\" variation=\"clear\" > Dismiss #4 </Overlay.Button> <Overlay.Button palette=\"auto\" variation=\"clear\" > Dismiss #5 </Overlay.Button> </Card.Footer> </Card.Container> </Overlay.Section> </Overlay.Container> Focus Trapping NOTE : Introduced feature in v0.4.13. WARNING : This feature is only available in Javascript-enabled clients. USAGE : This feature can not be demonstrated in the REPL, click the Link button to open in Playground. While the Overlay is active, focus movement is trapped within the first and last found focusable elements. <script> import { Button, Card, Overlay, } from \"@kahi-ui/framework\"; </script> <Button is=\"label\" for=\"overlay-focus-trapping\"> Open FOCUS TRAPPED Overlay </Button> <Overlay.Container logic_id=\"overlay-focus-trapping\"> <Overlay.Section> <Card.Container palette=\"inverse\" max_width=\"75\" > <Card.Header> FOCUS TRAPPED Overlay </Card.Header> <Card.Footer> <Overlay.Button tabindex=\"3\" palette=\"auto\" variation=\"clear\" > Dismiss #3 </Overlay.Button> <Overlay.Button tabindex=\"1\" palette=\"auto\" variation=\"clear\" > Dismiss #1 </Overlay.Button> <Overlay.Button tabindex=\"5\" palette=\"auto\" variation=\"clear\" > Dismiss #5 </Overlay.Button> <Overlay.Button tabindex=\"4\" palette=\"auto\" variation=\"clear\" > Dismiss #4 </Overlay.Button> <Overlay.Button tabindex=\"2\" palette=\"auto\" variation=\"clear\" > Dismiss #2 </Overlay.Button> </Card.Footer> </Card.Container> </Overlay.Section> </Overlay.Container> You can customize which elements are used as the first and last with references or CSS Selectors, via the focus_first / focus_last properties. <script> import { Button, Card, Overlay, } from \"@kahi-ui/framework\"; let first_element; let last_element; </script> <Button is=\"label\" for=\"overlay-focus-trapping-first-last\" > Open FOCUS TRAPPED Overlay </Button> <Overlay.Container logic_id=\"overlay-focus-trapping-first-last\" focus_first={first_element} focus_last={last_element} > <Overlay.Section> <Card.Container palette=\"inverse\" max_width=\"75\" > <Card.Header> FOCUS TRAPPED Overlay </Card.Header> <Card.Footer> <Overlay.Button tabindex=\"3\" palette=\"auto\" variation=\"clear\" > Dismiss #3 </Overlay.Button> <Overlay.Button bind:element={first_element} tabindex=\"1\" palette=\"auto\" variation=\"clear\" > Dismiss #1 </Overlay.Button> <Overlay.Button bind:element={last_element} tabindex=\"5\" palette=\"auto\" variation=\"clear\" > Dismiss #5 </Overlay.Button> <Overlay.Button tabindex=\"4\" palette=\"auto\" variation=\"clear\" > Dismiss #4 </Overlay.Button> <Overlay.Button tabindex=\"2\" palette=\"auto\" variation=\"clear\" > Dismiss #2 </Overlay.Button> </Card.Footer> </Card.Container> </Overlay.Section> </Overlay.Container> Loading NOTE : Introduced feature in v0.4.13. USAGE : Use your Browser's devtools to observe this feature. You can customize the loading behavior of slotted content via the loading property. <script> import { Button, Card, Overlay, } from \"@kahi-ui/framework\"; </script> <Button is=\"label\" for=\"overlay-lazy\"> Open LAZY Overlay </Button> <Overlay.Container logic_id=\"overlay-lazy\" loading=\"lazy\" > <Overlay.Section> <Card.Container palette=\"inverse\" max_width=\"75\" > <Card.Header>LAZY Overlay</Card.Header> <Card.Footer> <Overlay.Button palette=\"auto\" variation=\"clear\" > Dismiss </Overlay.Button> </Card.Footer> </Card.Container> </Overlay.Section> </Overlay.Container> Backdrop You can optionally include a backdrop by passing via composing the <Overlay.Backdrop> Component. <script> import { Button, Card, Overlay, } from \"@kahi-ui/framework\"; </script> <Button is=\"label\" for=\"overlay-backdrop-no\"> Open NO BACKDROP Overlay </Button> <Button is=\"label\" for=\"overlay-backdrop-has\"> Open HAS BACKDROP Overlay </Button> <Overlay.Container logic_id=\"overlay-backdrop-no\"> <Overlay.Section> <Card.Container palette=\"inverse\" max_width=\"75\" > <Card.Header> NO BACKDROP Overlay </Card.Header> <Card.Footer> <Overlay.Button palette=\"auto\" variation=\"clear\" > Dismiss </Overlay.Button> </Card.Footer> </Card.Container> </Overlay.Section> </Overlay.Container> <Overlay.Container logic_id=\"overlay-backdrop-has\"> <Overlay.Backdrop /> <Overlay.Section> <Card.Container palette=\"inverse\" max_width=\"75\" > <Card.Header> HAS BACKDROP Overlay </Card.Header> <Card.Footer> <Overlay.Button palette=\"auto\" variation=\"clear\" > Dismiss </Overlay.Button> </Card.Footer> </Card.Container> </Overlay.Section> </Overlay.Container> Dismissible NOTE : Introduced keybinding support in v0.4.13. WARNING : This feature is only available in Javascript-enabled clients. You can optionally have the Overlay dismissible by pressing the ESC key or clicking the <Overlay.Backdrop> if applicable, via the dismissible property. <script> import { Button, Card, Overlay, } from \"@kahi-ui/framework\"; </script> <Button is=\"label\" for=\"overlay-dismissible-disabled\"> Open NON-DISMISSIBLE Overlay </Button> <Button is=\"label\" for=\"overlay-dismissible-enabled\"> Open DISMISSIBLE Overlay </Button> <Overlay.Container logic_id=\"overlay-dismissible-disabled\" > <Overlay.Backdrop /> <Overlay.Section> <Card.Container palette=\"inverse\" max_width=\"75\" > <Card.Header> NON-DISMISSIBLE Overlay </Card.Header> <Card.Footer> <Overlay.Button palette=\"auto\" variation=\"clear\" > Dismiss </Overlay.Button> </Card.Footer> </Card.Container> </Overlay.Section> </Overlay.Container> <Overlay.Container logic_id=\"overlay-dismissible-enabled\" dismissible > <Overlay.Backdrop /> <Overlay.Section> <Card.Container palette=\"inverse\" max_width=\"75\" > <Card.Header> DISMISSIBLE Overlay </Card.Header> <Card.Footer> <Overlay.Button palette=\"auto\" variation=\"clear\" > Dismiss </Overlay.Button> </Card.Footer> </Card.Container> </Overlay.Section> </Overlay.Container> Once NOTE : Introduced feature in v0.4.11. WARNING : This feature is only available in Javascript-enabled clients. You can enable having the Overlay dismissed whenever <Overlay.Section> inner content is clicked via the once property. <script> import { Button, Card, Overlay, } from \"@kahi-ui/framework\"; </script> <Button is=\"label\" for=\"overlay-once-disabled\"> Open NON-ONCE Overlay </Button> <Button is=\"label\" for=\"overlay-once-enabled\"> Open ONCE Overlay </Button> <Overlay.Container logic_id=\"overlay-once-disabled\"> <Overlay.Backdrop /> <Overlay.Section> <Card.Container palette=\"inverse\" max_width=\"75\" > <Card.Header>NON-ONCE Overlay</Card.Header> <Card.Footer> <Overlay.Button palette=\"auto\" variation=\"clear\" > Dismiss </Overlay.Button> </Card.Footer> </Card.Container> </Overlay.Section> </Overlay.Container> <Overlay.Container logic_id=\"overlay-once-enabled\" once > <Overlay.Backdrop /> <Overlay.Section> <Card.Container palette=\"inverse\" max_width=\"75\" > <Card.Header>ONCE Overlay</Card.Header> <Card.Footer> <Overlay.Button palette=\"auto\" variation=\"clear\" > Dismiss </Overlay.Button> </Card.Footer> </Card.Container> </Overlay.Section> </Overlay.Container> Orientation NOTE : By passing an array, you can set responsive values . e.g. orientation={[\"desktop:horizontal\", \"widescreen:horizontal\"]} You can set the Overlay to render horizontally via the orientation property. <script> import {Box, Overlay} from \"@kahi-ui/framework\"; </script> <Overlay.Container> <Overlay.Section orientation=\"horizontal\" spacing=\"medium\" padding_bottom=\"medium\" padding_right=\"medium\" > <Box>I am the first Box!</Box> <Box>And I am a sibling!</Box> </Overlay.Section> </Overlay.Container> Alignment You can align <Overlay.Section> child content via the alignment, alignment_x, and alignment_y properties. <script> import { Button, Code, Overlay, Tile, Text, } from \"@kahi-ui/framework\"; import {X} from \"lucide-svelte\"; </script> <Overlay.Container> <Overlay.Section spacing=\"medium\" alignment_x=\"right\" alignment_y=\"bottom\" padding_bottom=\"medium\" padding_right=\"medium\" > <Tile.Container elevation=\"medium\" width=\"content-max\" max_width=\"75\" > <Tile.Section> <Tile.Header>File Deleted</Tile.Header> <Text> <Code>important_file.docx</Code> was deleted from cloud storage. </Text> </Tile.Section> <Tile.Footer> <Button palette=\"negative\" variation=\"clear\" sizing=\"small\" > <X size=\"1em\" /> </Button> </Tile.Footer> </Tile.Container> <Tile.Container elevation=\"medium\" width=\"content-max\" max_width=\"75\" > <Tile.Section> <Tile.Header>File Deleted</Tile.Header> <Text> <Code>other_file.png</Code> was deleted from cloud storage. </Text> </Tile.Section> <Tile.Footer> <Button palette=\"negative\" variation=\"clear\" sizing=\"small\" > <X size=\"1em\" /> </Button> </Tile.Footer> </Tile.Container> </Overlay.Section> </Overlay.Container> Spacing You can adjust the spacing between <Overlay.Section> child content via the spacing, spacing_x, and spacing_y properties. <script> import { Button, Code, Overlay, Tile, Text, } from \"@kahi-ui/framework\"; import {X} from \"lucide-svelte\"; </script> <Overlay.Container> <Overlay.Section spacing=\"medium\" alignment_x=\"right\" alignment_y=\"bottom\" padding_bottom=\"medium\" padding_right=\"medium\" > <Tile.Container elevation=\"medium\" width=\"content-max\" max_width=\"75\" > <Tile.Section> <Tile.Header>File Deleted</Tile.Header> <Text> <Code>important_file.docx</Code> was deleted from cloud storage. </Text> </Tile.Section> <Tile.Footer> <Button palette=\"negative\" variation=\"clear\" sizing=\"small\" > <X size=\"1em\" /> </Button> </Tile.Footer> </Tile.Container> <Tile.Container elevation=\"medium\" width=\"content-max\" max_width=\"75\" > <Tile.Section> <Tile.Header>File Deleted</Tile.Header> <Text> <Code>other_file.png</Code> was deleted from cloud storage. </Text> </Tile.Section> <Tile.Footer> <Button palette=\"negative\" variation=\"clear\" sizing=\"small\" > <X size=\"1em\" /> </Button> </Tile.Footer> </Tile.Container> </Overlay.Section> </Overlay.Container> Transition You can change which built-in Transition is animated using clip, fade, scale, or slide via the animation property. <script> import { Button, Card, Overlay, } from \"@kahi-ui/framework\"; </script> <Button is=\"label\" for=\"overlay-transition-clip\"> Open CLIP Overlay </Button> <Button is=\"label\" for=\"overlay-transition-fade\"> Open FADE Overlay </Button> <Button is=\"label\" for=\"overlay-transition-scale\"> Open SCALE Overlay </Button> <Button is=\"label\" for=\"overlay-transition-slide\"> Open SLIDE Overlay </Button> <Overlay.Container logic_id=\"overlay-transition-clip\"> <Overlay.Section animation=\"clip\"> <Card.Container palette=\"inverse\" max_width=\"75\" > <Card.Header>CLIP Overlay</Card.Header> <Card.Footer> <Overlay.Button palette=\"auto\" variation=\"clear\" > Dismiss </Overlay.Button> </Card.Footer> </Card.Container> </Overlay.Section> </Overlay.Container> <Overlay.Container logic_id=\"overlay-transition-fade\"> <Overlay.Section animation=\"fade\"> <Card.Container palette=\"inverse\" max_width=\"75\" > <Card.Header>FADE Overlay</Card.Header> <Card.Footer> <Overlay.Button palette=\"auto\" variation=\"clear\" > Dismiss </Overlay.Button> </Card.Footer> </Card.Container> </Overlay.Section> </Overlay.Container> <Overlay.Container logic_id=\"overlay-transition-scale\"> <Overlay.Section animation=\"scale\"> <Card.Container palette=\"inverse\" max_width=\"75\" > <Card.Header>SCALE Overlay</Card.Header> <Card.Footer> <Overlay.Button palette=\"auto\" variation=\"clear\" > Dismiss </Overlay.Button> </Card.Footer> </Card.Container> </Overlay.Section> </Overlay.Container> <Overlay.Container logic_id=\"overlay-transition-slide\"> <Overlay.Section animation=\"slide\" direction=\"top\"> <Card.Container palette=\"inverse\" max_width=\"75\" > <Card.Header>SLIDE Overlay</Card.Header> <Card.Footer> <Overlay.Button palette=\"auto\" variation=\"clear\" > Dismiss </Overlay.Button> </Card.Footer> </Card.Container> </Overlay.Section> </Overlay.Container> Direction You can change which direction the entrance animation comes from via the direction property. <script> import { Button, Card, Overlay, } from \"@kahi-ui/framework\"; </script> <Button is=\"label\" for=\"overlay-direction\"> Open SLIDE Overlay </Button> <Overlay.Container logic_id=\"overlay-direction\"> <Overlay.Section animation=\"slide\" direction=\"left\" > <Card.Container palette=\"inverse\" max_width=\"75\" > <Card.Header>SLIDE Overlay</Card.Header> <Card.Footer> <Overlay.Button palette=\"auto\" variation=\"clear\" > Dismiss </Overlay.Button> </Card.Footer> </Card.Container> </Overlay.Section> </Overlay.Container> "},{"identifier":"/docs/overlays/popover","title":"Popover","text":"Popover NOTE : Introduced feature in v0.2.11. WARNING : This feature received a breaking change in v0.6.0 . Popover is typically used for hiding content that'll clip onto the page when activated via a button or something else. <script> import { Box, Menu, Popover, Spacer, Text, } from \"@kahi-ui/framework\"; </script> <Popover.Container logic_id=\"popover-preview\" dismissible > <Popover.Button palette=\"accent\"> Open Menu </Popover.Button> <Popover.Section alignment_x=\"right\" spacing=\"medium\" > <Box variation=\"borders\" elevation=\"high\" padding=\"medium\" radius=\"tiny\" > <Menu.Container> <Menu.Button> Copy <Spacer is=\"span\" spacing_y=\"medium\" /> <Text is=\"small\">CTRL+C</Text> </Menu.Button> <Menu.Button> Cut <Spacer is=\"span\" spacing_y=\"medium\" /> <Text is=\"small\">CTRL+X</Text> </Menu.Button> <Menu.Heading /> <Menu.Button> Delete <Spacer is=\"span\" spacing_y=\"medium\" /> <Text is=\"small\">DEL</Text> </Menu.Button> </Menu.Container> </Box> </Popover.Section> </Popover.Container> Imports <!-- prettier-ignore --> <script> import {Popover} from \"@kahi-ui/framework\"; const { Container, Button, Group, Section } = Popover; </script> Logic ID You can make the Popover toggleable via the logic_id property, and then referencing that with a Button . Alternatively, <Popover.Button> can be used while inside a <Popover.Container> tree, which automatically inherits logic_id via Svelte Context . <script> import {Box, Popover} from \"@kahi-ui/framework\"; </script> <Popover.Container logic_id=\"popover-logic-id\"> <Popover.Button palette=\"accent\"> Open Popover </Popover.Button> <Popover.Section alignment_x=\"right\"> <Box palette=\"inverse\" elevation=\"high\" padding=\"medium\" radius=\"tiny\" > <Popover.Button palette=\"auto\" variation=\"clear\" > Dismiss </Popover.Button> </Box> </Popover.Section> </Popover.Container> Logic State WARNING : This feature is only available in Javascript-enabled clients. You can manually open / close the Popover via the logic_state property. <script> import { Box, Button, Popover, } from \"@kahi-ui/framework\"; let logic_state = false; </script> <Popover.Container logic_id=\"popover-logic-state\" bind:logic_state > <Popover.Button> Open TOGGABLE Popover </Popover.Button> <Popover.Section alignment_x=\"right\"> <Box palette=\"inverse\" elevation=\"high\" padding=\"medium\" radius=\"tiny\" > TOGGABLE Popover <br /> <Button on:click={() => (logic_state = !logic_state)} > Toggle Popover </Button> </Box> </Popover.Section> </Popover.Container> Dismissible NOTE : Introduced keybinding support in v0.4.13. WARNING : This feature is only available in Javascript-enabled clients. You can optionally have the Popover dismissible by clicking outside the <Popover.Section> child content, pressing the ESC key, or inner content losing focus, via the dismissible property. <script> import {Box, Popover} from \"@kahi-ui/framework\"; </script> <Popover.Container logic_id=\"popover-dismissible-disabled\" > <Popover.Button> Open NON-DISMISSIBLE Popover </Popover.Button> <Popover.Section alignment_x=\"right\"> <Box palette=\"inverse\" elevation=\"high\" padding=\"medium\" radius=\"tiny\" > NON-DISMISSIBLE Popover </Box> </Popover.Section> </Popover.Container> <Popover.Container logic_id=\"popover-dismissible-enabled\" dismissible > <Popover.Button> Open DISMISSIBLE Popover </Popover.Button> <Popover.Section alignment_x=\"right\"> <Box palette=\"inverse\" elevation=\"high\" padding=\"medium\" radius=\"tiny\" > DISMISSIBLE Popover </Box> </Popover.Section> </Popover.Container> Once NOTE : Introduced feature in v0.4.11. WARNING : This feature is only available in Javascript-enabled clients. You can enable having the Popover dismissed whenever inner content is clicked via the once property. <script> import {Box, Popover} from \"@kahi-ui/framework\"; </script> <Popover.Container logic_id=\"popover-once-disabled\"> <Popover.Button> Open NON-ONCE Popover </Popover.Button> <Popover.Section alignment_x=\"right\"> <Box palette=\"inverse\" elevation=\"high\" padding=\"medium\" radius=\"tiny\" > NON-ONCE Popover </Box> </Popover.Section> </Popover.Container> <Popover.Container logic_id=\"popover-once-enabled\" once > <Popover.Button>Open ONCE Popover</Popover.Button> <Popover.Section alignment_x=\"right\"> <Box palette=\"inverse\" elevation=\"high\" padding=\"medium\" radius=\"tiny\" > ONCE Popover </Box> </Popover.Section> </Popover.Container> Control NOTE : Introduced feature in v0.6.2 You can alter the functionality of a <Popover.Container> Component to activate by focusing the inner content via the variation property. <script> import { Box, Check, Menu, Popover, Spacer, TextInput, } from \"@kahi-ui/framework\"; let searching = \"\"; </script> <Popover.Container variation=\"control\"> <TextInput placeholder=\"...filter options\" bind:value={searching} /> <Popover.Section alignment_x=\"right\" spacing=\"small\" > <Box elevation=\"medium\" padding=\"medium\" variation=\"borders\" radius=\"tiny\" > <Menu.Container sizing=\"tiny\"> <Menu.Heading>Filter</Menu.Heading> <Menu.Label for=\"popover-preview-control-cpus\" hidden={searching && !\"cpus\".includes( searching.toLowerCase() )} > CPUs <Spacer /> <Check value=\"cpus\" palette=\"accent\" variation=\"flush\" /> </Menu.Label> <Menu.Label for=\"popover-preview-control-hard-drives\" hidden={searching && !\"hard drives\".includes( searching.toLowerCase() )} > Hard Drives <Spacer /> <Check value=\"hard-drives\" palette=\"accent\" variation=\"flush\" state /> </Menu.Label> <Menu.Label for=\"popover-preview-control-solid-state-drives\" hidden={searching && !\"solid state drives\".includes( searching.toLowerCase() )} > Solid State Drives <Spacer /> <Check value=\"solid-state-drives\" palette=\"accent\" variation=\"flush\" /> </Menu.Label> </Menu.Container> </Box> </Popover.Section> </Popover.Container> Tooltip NOTE : Introduced feature in v0.6.0. You can alter the functionality of a <Popover.Container> Component to activate by hovering or focusing the inner content via the variation property. <script> import { Box, Button, Popover, } from \"@kahi-ui/framework\"; </script> <Popover.Container variation=\"tooltip\"> Hover me! <Popover.Section alignment_x=\"right\" spacing=\"nano\" animation=\"fade\" > <Box elevation=\"low\" palette=\"neutral\" padding=\"small\" radius=\"nano\" > I contain extra information! </Box> </Popover.Section> </Popover.Container> Plus some other text... <br /> <br /> <Popover.Container variation=\"tooltip\"> <Button palette=\"accent\"> Some Undescriptive Button </Button> <Popover.Section alignment_x=\"right\" spacing=\"nano\" animation=\"fade\" > <Box elevation=\"low\" palette=\"neutral\" padding=\"small\" radius=\"nano\" > I describe the button! </Box> </Popover.Section> </Popover.Container> Placement You can adjust which side your content is placed on via the placement property. <script> import {Box, Popover} from \"@kahi-ui/framework\"; </script> <Popover.Container logic_id=\"popover-placement-right\" dismissible > <Popover.Button palette=\"accent\"> Open RIGHT Popover </Popover.Button> <Popover.Section alignment_y=\"bottom\" placement=\"right\" spacing=\"medium\" > <Box palette=\"inverse\" elevation=\"high\" padding=\"medium\" radius=\"tiny\" > This is a RIGHT Popover. </Box> </Popover.Section> </Popover.Container> <Popover.Container logic_id=\"popover-placement-bottom\" dismissible > <Popover.Button palette=\"accent\"> Open BOTTOM Popover </Popover.Button> <Popover.Section alignment_x=\"right\" spacing=\"medium\" > <Box palette=\"inverse\" elevation=\"high\" padding=\"medium\" radius=\"tiny\" > This is a BOTTOM Popover. </Box> </Popover.Section> </Popover.Container> Alignment You can align Popover which direction the child content breaks, via the alignment_x and alignment_y properties respectively. <script> import { Box, Popover, Spacer, } from \"@kahi-ui/framework\"; </script> <Popover.Container logic_id=\"popover-alignment-x-right\" dismissible > <Popover.Button palette=\"accent\"> Open RIGHT X Popover </Popover.Button> <Popover.Section alignment_x=\"right\" spacing=\"medium\" > <Box palette=\"inverse\" elevation=\"high\" padding=\"medium\" radius=\"tiny\" > This is a RIGHT X Popover. </Box> </Popover.Section> </Popover.Container> <Popover.Container logic_id=\"popover-alignment-x-center\" dismissible > <Popover.Button palette=\"accent\"> Open CENTER X Popover </Popover.Button> <Popover.Section spacing=\"medium\"> <Box palette=\"inverse\" elevation=\"high\" padding=\"medium\" radius=\"tiny\" > This is a CENTER X Popover. </Box> </Popover.Section> </Popover.Container> <Popover.Container logic_id=\"popover-alignment-x-left\" dismissible > <Popover.Button palette=\"accent\"> Open LEFT X Popover </Popover.Button> <Popover.Section alignment_x=\"left\" spacing=\"medium\" > <Box palette=\"inverse\" elevation=\"high\" padding=\"medium\" radius=\"tiny\" > This is a LEFT X Popover. </Box> </Popover.Section> </Popover.Container> <Spacer spacing=\"huge\" /> <Popover.Container logic_id=\"popover-alignment-y-top\" dismissible > <Popover.Button palette=\"accent\"> Open TOP Y Popover </Popover.Button> <Popover.Section placement=\"right\" alignment_y=\"top\" spacing=\"medium\" > <Box palette=\"inverse\" elevation=\"high\" padding=\"medium\" radius=\"tiny\" > This is a TOP Y Popover. </Box> </Popover.Section> </Popover.Container> <Popover.Container logic_id=\"popover-alignment-y-center\" dismissible > <Popover.Button palette=\"accent\"> Open CENTER Y Popover </Popover.Button> <Popover.Section placement=\"right\" spacing=\"medium\" > <Box palette=\"inverse\" elevation=\"high\" padding=\"medium\" radius=\"tiny\" > This is a CENTER Y Popover. </Box> </Popover.Section> </Popover.Container> <Popover.Container logic_id=\"popover-alignment-y-bottom\" dismissible > <Popover.Button palette=\"accent\"> Open BOTTOM Y Popover </Popover.Button> <Popover.Section placement=\"right\" alignment_y=\"bottom\" spacing=\"medium\" > <Box palette=\"inverse\" elevation=\"high\" padding=\"medium\" radius=\"tiny\" > This is a BOTTOM Y Popover. </Box> </Popover.Section> </Popover.Container> "},{"identifier":"/docs/resources/community","title":"Community","text":"Community Below you can find resources made by members of the community using Kahi UI or projects that integrate well with Kahi UI. Want to List Your Project? If you want to list your project that uses Kahi UI, just create a Pull Request for this file! Discussion / Support Other community channels besides the main repository for talking about or getting help with Kahi UI. Discord — Official support Discord, where you can talk to others that use Kahi UI. Icons Iconography projects that have been shown to work well with Kahi UI. Lucide Icons — Community fork of Feather Icons , provides lightweight SVG icons. (used by this documentation site) Web Applications Deployed Web Applications that utilize Kahi UI as their design language. 3D Rendering The Raytracer Challenge REPL - jakobwesthoff/the_raytracer_challenge_repl — REPL for rendering raytraced scenes in modern browsers with a live editor. "},{"identifier":"/docs/resources/faq","title":"F.A.Q.","text":"F.A.Q. Where can I get help? If you need help with something not properly documented or needs clarification, you can visit the Issue Tracker . File a new issue and it'll be addressed on a spare time effort. Alternatively, visit the Discord Server to talk to other developers using Kahi UI. What Browsers are supported? Visit the Browser Support documentation for more information. Can I use the library without Svelte? Yes, however there is no official support to do so. Visit Releases and grab the .css distributable files, and read the library source code on how to do markup, progressive enhancements, etc. Can I use the library on Browsers that don't support or have Javascript disabled? Yes! The library is explictly made in mind that Svelte should be used to sprinkle extra functionality ontop of logic baked in HTML / CSS. If you find something not working properly, file an issue . Is Accessibility / ARIA Supported? While I want to implement full proper support, including keyboard navigation. It is currently not being pursued and will be tackled at a later date. However if you encounter something that'll be detrimental file an issue . "},{"identifier":"/docs/resources/official","title":"Official","text":"Official Below you can find resources made maintained by Kahi UI contributors. Discussion / Support Official support provided by contributors and community members. Issue Tracker — Official GitHub issue tracker for filing bugs and requesting support. Showcase Projects that show off the Kahi UI framework. kahi-framework/kahi-ui.nbn.dev — Official documentation site. Templates Projects that can be used as a basis for your own project, showing how to integrate with various software. kahi-framework/kahi-ui-template-svelte — Official template for Svelte based on npx degit sveltejs/template my-svelte-project starter. kahi-framework/kahi-ui-template-sveltekit — Official template for SvelteKit based on the npm init svelte@next starter. kahi-framework/kahi-ui-template-tauri — Official template for Tauri based on the npx create-tauri-app starter. "},{"identifier":"/docs/stores/darkmode","title":"darkmode","text":"darkmode NOTE : Introduced feature in v0.2.3. USAGE : This feature can be demonstrated by clicking the Theme Toggle button in the top navigation. darkmode is a readonly Svelte Store , which returns true whenever either htmldark or prefersdark are truthy. <script> import {Text, darkmode} from \"@kahi-ui/framework\"; const darkmode_store = darkmode(); </script> <Text> {$darkmode_store ? \"Darkmode is enabled!\" : \"Lightmode is enabled!\"} </Text> Imports import {darkmode, lightmode} from \"@kahi-ui/framework\"; Light Mode NOTE : Introduced feature in v0.6.0. To check if lightmode is enabled, the lightmode Store is available. <script> import {Text, lightmode} from \"@kahi-ui/framework\"; const lightmode_store = lightmode(); </script> <Text> {$lightmode_store ? \"Lightmode is enabled!\" : \"Lightmode is disabled!\"} </Text> Storage To stay unopinonated in your Application's architecture, Kahi UI does NOT supply any mechanism to store data on the user's Browser. So if you want to provide a manual switch for users to change your Application's theme mode like this documentation website. It's recommended to use something like the Web Storage API and htmlmode . Compatibility The Store is dependent on MutationObserver / Window.matchMedia . So if you're rendering on the server, it'll always return false for darkmode, defaulting to true for lightmode. "},{"identifier":"/docs/stores/htmlmode","title":"htmlmode","text":"htmlmode NOTE : Introduced feature in v0.2.3. WARNING : This feature was renamed from htmlpalette to htmlmode in v0.6.0 . USAGE : This feature can be demonstrated by clicking the Theme Toggle button in the top navigation. htmlmode is a Svelte Store , which is bound to <html data-mode=\"XXX\"> and updates whenever that attribute is changed. Defaulting to an empty string (\"\") if not set. <script> import { Code, Heading, Text, htmlmode, } from \"@kahi-ui/framework\"; const mode_store = htmlmode(); </script> <Heading>Application Theme Mode</Heading> <Text> <Code>&lt;html data-mode&gt;</Code>: <Code> \"{$mode_store}\" </Code> </Text> Imports import { htmlmode, htmldark, htmllight, } from \"@kahi-ui/framework\"; Built-In Shortcuts NOTE : Introduced feature in v0.6.0. The htmlmode Store also comes with two readonly preconfigured shortcut Stores, htmldark and htmllight. <script> import { Code, Heading, Text, htmldark, htmllight, } from \"@kahi-ui/framework\"; const dark_store = htmldark(); const light_store = htmllight(); </script> <Heading>Application Theme Mode</Heading> <Text> <Code>&lt;html data-mode=\"dark\"&gt;</Code>: <Code> {$dark_store} </Code> </Text> <Text> <Code>&lt;html data-mode=\"light\"&gt;</Code>: <Code> {$light_store} </Code> </Text> Compatibility The Store is dependent on MutationObserver . So if you're rendering on the server, it'll always return an empty string (\"\"). "},{"identifier":"/docs/stores/mediaquery","title":"mediaquery","text":"mediaquery NOTE : Introduced feature in v0.2.14. mediaquery / mediaqueries are readonly Svelte Stores , which returns true whenever a provided Media Query is currently active. <script> import { Code, Heading, Text, mediaquery, mediaqueries, } from \"@kahi-ui/framework\"; const standard_hd_store = mediaquery( \"(min-width: 1280px) and (min-height: 720px)\" ); const ratio_store = mediaquery( \"(aspect-ratio: 16/9)\" ); // By default `mediaqueries` has `or` behavior, which means if any query is valid, then // `true` is returned by the Store // // However in this case, we want `and` behavior, meaning all queries have to be valid // for `true` to be returned const combo_store = mediaqueries( [ \"(min-width: 1280px) and (min-height: 720px)\", \"(aspect-ratio: 16/9)\", ], {behavior: \"and\"} ); </script> <Heading>Queries Enabled</Heading> <Text>sHD: <Code>{$standard_hd_store}</Code></Text> <Text>16:9: <Code>{$ratio_store}</Code></Text> <Text>sHD + 16:9: <Code>{$combo_store}</Code></Text> Imports import { mediaquery, mediaqueries, } from \"@kahi-ui/framework\"; Compatibility The Stores are dependent on Window.matchMedia . So if you're rendering on the server, it'll always return false. "},{"identifier":"/docs/stores/prefersscheme","title":"prefersscheme","text":"prefersscheme NOTE : Introduced feature in v0.2.3. prefersscheme is a readonly Svelte Store , which returns true whenever matchMedia(SCHEME) is validated. NOTE : Change your Operating System's color settings to see changes. <script> import { Code, Heading, Text, prefersscheme, } from \"@kahi-ui/framework\"; const darkscheme_store = prefersscheme(\"dark\"); const lightscheme_store = prefersscheme(\"light\"); </script> <Heading>User Color Scheme Preferences</Heading> <Text> Dark Scheme Preference: <Code >{$darkscheme_store}</Code > </Text> <Text> Light Scheme Preference: <Code >{$lightscheme_store}</Code > </Text> Imports import { prefersscheme, prefersdark, preferslight, } from \"@kahi-ui/framework\"; Built-in Shortcuts The prefersscheme Store also comes with two readonly preconfigured shortcut Stores, prefersdark and preferslight. <script> import { Code, Heading, Text, prefersdark, preferslight, } from \"@kahi-ui/framework\"; const darkscheme_store = prefersdark(); const lightscheme_store = preferslight(); </script> <Heading>User Color Scheme Preferences</Heading> <Text> Dark Scheme Preference: <Code >{$darkscheme_store}</Code > </Text> <Text> Light Scheme Preference: <Code >{$lightscheme_store}</Code > </Text> Compatibility The Store is dependent on Window.matchMedia . So if you're rendering on the server, it'll always return false. "},{"identifier":"/docs/stores/scrolllock","title":"scrolllock","text":"scrolllock NOTE : Introduced feature in v0.2.4. scrolllock is a Svelte Store which sets overflow: hidden; on an HTMLElement whenever the Store is set to true. Restoring the previous value of overflow whenever set back to false. Allowing for connecting Component open states like for modals, to the prevent overscrolling the main document body. NOTE : If no HTMLElement is passed into the Store function, it'll default to the root <html>. <script> import { Box, Button, Heading, scrolllock, } from \"@kahi-ui/framework\"; const scrolllock_store = scrolllock( document.querySelector(\".repl-render\") ); const on_click = () => ($scrolllock_store = !$scrolllock_store); </script> <Button on:click={on_click}>Toggle Scroll Lock</Button> <Box palette=\"accent\" padding=\"small\"> <Heading>Scrollable content</Heading> <Heading is=\"h2\">Scrollable content</Heading> <Heading is=\"h3\">Scrollable content</Heading> <Heading is=\"h4\">Scrollable content</Heading> </Box> <Box palette=\"affirmative\" padding=\"small\"> <Heading>Scrollable content</Heading> <Heading is=\"h2\">Scrollable content</Heading> <Heading is=\"h3\">Scrollable content</Heading> <Heading is=\"h4\">Scrollable content</Heading> </Box> <Box palette=\"negative\" padding=\"small\"> <Heading>Scrollable content</Heading> <Heading is=\"h2\">Scrollable content</Heading> <Heading is=\"h3\">Scrollable content</Heading> <Heading is=\"h4\">Scrollable content</Heading> </Box> <Box palette=\"alert\" padding=\"small\"> <Heading>Scrollable content</Heading> <Heading is=\"h2\">Scrollable content</Heading> <Heading is=\"h3\">Scrollable content</Heading> <Heading is=\"h4\">Scrollable content</Heading> </Box> Imports import {scrolllock} from \"@kahi-ui/framework\"; Compatibility The Store is dependent on setting an element's inline styles via Javascript. So on server, will return a readable Store which will error on having a new value set. "},{"identifier":"/docs/stores/viewport","title":"viewport","text":"viewport NOTE : Introduced feature in v0.2.14. viewport / viewports are readonly Svelte Stores , which returns true whenever a Viewport selected in initialization is currently active. USAGE : REPL does not support viewport values, resize your Browser to observe this feature. <script> import { Code, Heading, Text, viewport, viewports, } from \"@kahi-ui/framework\"; const mobile_store = viewport(\"mobile\"); const tablet_store = viewport(\"tablet\"); const desktop_store = viewport(\"desktop\"); const widescreen_store = viewport(\"widescreen\"); const combo_store = viewports({ mobile: true, tablet: true, }); </script> <Heading>Viewports Enabled</Heading> <Text>Mobile: <Code>{$mobile_store}</Code></Text> <Text>Tablet: <Code>{$tablet_store}</Code></Text> <Text>Desktop: <Code>{$desktop_store}</Code></Text> <Text> Widescreen: <Code> {$widescreen_store} </Code> </Text> <Text>Combo: <Code>{$combo_store}</Code></Text> Imports import {viewport, viewports} from \"@kahi-ui/framework\"; Compatibility The Stores are dependent on Window.matchMedia . So if you're rendering on the server, it'll always return false. "},{"identifier":"/docs/surfaces/box","title":"Box","text":"Box NOTE : Introduced feature in v0.2.0. Box is a surface primitive for encapsulating section content in a block of color. <script> import {Box} from \"@kahi-ui/framework\"; </script> <Box>This is a Box!</Box> Imports <script> import {Box} from \"@kahi-ui/framework\"; </script> Palette You can change the color palette of the Box via the palette property. <script> import { Box, Mosaic, Text, } from \"@kahi-ui/framework\"; </script> <Mosaic.Container sizing=\"medium\" spacing=\"large\"> <Box> <Text is=\"strong\">DEFAULT</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Box> <Box palette=\"accent\"> <Text is=\"strong\">ACCENT</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Box> <Box palette=\"neutral\"> <Text is=\"strong\">NEUTRAL</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Box> <Box palette=\"dark\"> <Text is=\"strong\">DARK</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Box> <Box palette=\"light\"> <Text is=\"strong\">LIGHT</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Box> <Box palette=\"alert\"> <Text is=\"strong\">ALERT</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Box> <Box palette=\"affirmative\"> <Text is=\"strong\">AFFIRMATIVE</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Box> <Box palette=\"informative\"> <Text is=\"strong\">INFORMATIVE</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Box> <Box palette=\"negative\"> <Text is=\"strong\">NEGATIVE</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Box> </Mosaic.Container> Borders NOTE : Introduced feature in v0.6.0. You can change the appearance of Box to show borders via the variation property. <script> import { Box, Mosaic, Text, } from \"@kahi-ui/framework\"; </script> <Mosaic.Container sizing=\"medium\" spacing=\"large\"> <Box variation=\"borders\"> <Text is=\"strong\">DEFAULT</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Box> <Box variation=\"borders\" palette=\"accent\"> <Text is=\"strong\">ACCENT</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Box> <Box variation=\"borders\" palette=\"neutral\"> <Text is=\"strong\">NEUTRAL</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Box> <Box variation=\"borders\" palette=\"dark\"> <Text is=\"strong\">DARK</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Box> <Box variation=\"borders\" palette=\"light\"> <Text is=\"strong\">LIGHT</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Box> <Box variation=\"borders\" palette=\"alert\"> <Text is=\"strong\">ALERT</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Box> <Box palette=\"affirmative\"> <Text is=\"strong\">AFFIRMATIVE</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Box> <Box variation=\"borders\" palette=\"informative\"> <Text is=\"strong\">INFORMATIVE</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Box> <Box variation=\"borders\" palette=\"negative\"> <Text is=\"strong\">NEGATIVE</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Box> </Mosaic.Container> Elevation NOTE : Introduced feature in v0.3.5. NOTE : By passing an array, you can set responsive values . e.g. elevation={[\"low\", \"tablet:lowest\", \"mobile:lowest\"]} You can set how \"high\" your Box will appear to be over top the page via the elevation property. <script> import { Box, Mosaic, Text, } from \"@kahi-ui/framework\"; </script> <Mosaic.Container sizing=\"medium\" spacing=\"large\"> <Box> <Text is=\"strong\">DEFAULT</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Box> <Box elevation=\"lowest\"> <Text is=\"strong\">LOWEST</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Box> <Box elevation=\"lower\"> <Text is=\"strong\">LOWER</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Box> <Box elevation=\"low\"> <Text is=\"strong\">LOW</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Box> <Box elevation=\"medium\"> <Text is=\"strong\">MEDIUM</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Box> <Box elevation=\"high\"> <Text is=\"strong\">HIGH</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Box> <Box elevation=\"higher\"> <Text is=\"strong\">HIGHER</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Box> <Box palette=\"inverse\" elevation=\"highest\"> <Text is=\"strong\">HIGHEST</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Box> </Mosaic.Container> Radius NOTE : Introduced feature in v0.6.0. NOTE : By passing an array, you can set responsive values . e.g. radius={[\"tiny\", \"tablet:medium\", \"mobile:medium\"]} You can modify the border radius of the Box via the radius property. <script> import { Box, Mosaic, Text, } from \"@kahi-ui/framework\"; </script> <Mosaic.Container sizing=\"medium\" spacing=\"large\"> <Box palette=\"inverse\" padding=\"huge\"> <Text is=\"strong\">DEFAULT</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Box> <Box palette=\"inverse\" radius=\"nano\" padding=\"huge\" > <Text is=\"strong\">NANO</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Box> <Box palette=\"inverse\" radius=\"tiny\" padding=\"huge\" > <Text is=\"strong\">TINY</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Box> <Box palette=\"inverse\" radius=\"small\" padding=\"huge\" > <Text is=\"strong\">SMALL</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Box> <Box palette=\"inverse\" radius=\"medium\" padding=\"huge\" > <Text is=\"strong\">MEDIUM</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Box> <Box palette=\"inverse\" radius=\"large\" padding=\"huge\" > <Text is=\"strong\">LARGE</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Box> <Box palette=\"inverse\" radius=\"huge\" padding=\"huge\" > <Text is=\"strong\">HUGE</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Box> <Box palette=\"inverse\" radius=\"massive\" padding=\"huge\" > <Text is=\"strong\">MASSIVE</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Box> </Mosaic.Container> Shape NOTE : By passing an array, you can set responsive values . e.g. shape={[\"circle\", \"tablet:pill\", \"mobile:pill\"]} You can modify the shape of the Box via the shape property. <script> import { Box, Mosaic, Text, } from \"@kahi-ui/framework\"; </script> <Mosaic.Container sizing=\"medium\" spacing=\"large\"> <Box palette=\"inverse\" padding=\"huge\"> <Text is=\"strong\">DEFAULT</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Box> <Box palette=\"inverse\" shape=\"circle\" padding=\"huge\" > <Text is=\"strong\">CIRCLE</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Box> <Box palette=\"inverse\" shape=\"pill\" padding=\"huge\"> <Text is=\"strong\">PILL</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Box> </Mosaic.Container> "},{"identifier":"/docs/surfaces/card","title":"Card","text":"Card NOTE : Introduced feature in v0.2.0. Card is a multi-part surface pattern for displaying a section of content in a long-form vertical format. <script> import { Badge, Button, Card, Spacer, Text, } from \"@kahi-ui/framework\"; </script> <Card.Container class=\"card-preview\"> <Card.Figure> <img src={IMAGE_BACKGROUND} /> </Card.Figure> <Card.Header> Ocean Rockies <Spacer /> <Badge palette=\"affirmative\">AVAILABLE</Badge> </Card.Header> <Card.Section> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </Card.Section> <Card.Footer> <Button palette=\"accent\">Book Flight</Button> </Card.Footer> </Card.Container> <style> :global(.card-preview) { max-width: 35ch; } </style> Imports <script> import {Card} from \"@kahi-ui/framework\"; const { Container, Figure, Footer, Header, Section, } = Card; </script> Palette You can change the color palette of the Card via the palette property. <script> import { Badge, Button, Card, Mosaic, Spacer, Text, } from \"@kahi-ui/framework\"; </script> <Mosaic.Container sizing=\"medium\" spacing=\"medium\"> <Card.Container> <Card.Figure> <img src={IMAGE_BACKGROUND} /> </Card.Figure> <Card.Header> Ocean Rockies <Spacer /> <Badge>DEFAULT</Badge> </Card.Header> <Card.Section> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Card.Section> </Card.Container> <Card.Container palette=\"accent\"> <Card.Figure> <img src={IMAGE_BACKGROUND} /> </Card.Figure> <Card.Header> Ocean Rockies <Spacer /> <Badge>ACCENT</Badge> </Card.Header> <Card.Section> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Card.Section> </Card.Container> <Card.Container palette=\"neutral\"> <Card.Figure> <img src={IMAGE_BACKGROUND} /> </Card.Figure> <Card.Header> Ocean Rockies <Spacer /> <Badge>NEUTRAL</Badge> </Card.Header> <Card.Section> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Card.Section> </Card.Container> <Card.Container palette=\"dark\"> <Card.Figure> <img src={IMAGE_BACKGROUND} /> </Card.Figure> <Card.Header> Ocean Rockies <Spacer /> <Badge>DARK</Badge> </Card.Header> <Card.Section> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Card.Section> </Card.Container> <Card.Container palette=\"light\"> <Card.Figure> <img src={IMAGE_BACKGROUND} /> </Card.Figure> <Card.Header> Ocean Rockies <Spacer /> <Badge>LIGHT</Badge> </Card.Header> <Card.Section> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Card.Section> </Card.Container> <Card.Container palette=\"alert\"> <Card.Figure> <img src={IMAGE_BACKGROUND} /> </Card.Figure> <Card.Header> Ocean Rockies <Spacer /> <Badge>ALERT</Badge> </Card.Header> <Card.Section> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Card.Section> </Card.Container> <Card.Container palette=\"affirmative\"> <Card.Figure> <img src={IMAGE_BACKGROUND} /> </Card.Figure> <Card.Header> Ocean Rockies <Spacer /> <Badge>AFFIRMATIVE</Badge> </Card.Header> <Card.Section> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Card.Section> </Card.Container> <Card.Container palette=\"informative\"> <Card.Figure> <img src={IMAGE_BACKGROUND} /> </Card.Figure> <Card.Header> Ocean Rockies <Spacer /> <Badge>INFORMATIVE</Badge> </Card.Header> <Card.Section> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Card.Section> </Card.Container> <Card.Container palette=\"negative\"> <Card.Figure> <img src={IMAGE_BACKGROUND} /> </Card.Figure> <Card.Header> Ocean Rockies <Spacer /> <Badge>NEGATIVE</Badge> </Card.Header> <Card.Section> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Card.Section> </Card.Container> </Mosaic.Container> Elevation NOTE : Introduced feature in v0.3.5. NOTE : By passing an array, you can set responsive values . e.g. elevation={[\"low\", \"tablet:lowest\", \"mobile:lowest\"]} You can set how \"high\" your Card will appear to be over top the page via the elevation property. <script> import { Badge, Button, Card, Mosaic, Spacer, Text, } from \"@kahi-ui/framework\"; </script> <Mosaic.Container sizing=\"medium\" spacing=\"large\"> <Card.Container elevation=\"lowest\"> <Card.Figure> <img src={IMAGE_BACKGROUND} /> </Card.Figure> <Card.Header> Ocean Rockies <Spacer /> <Badge>DEFAULT</Badge> </Card.Header> <Card.Section> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Card.Section> </Card.Container> <Card.Container elevation=\"none\"> <Card.Figure> <img src={IMAGE_BACKGROUND} /> </Card.Figure> <Card.Header> Ocean Rockies <Spacer /> <Badge>NONE</Badge> </Card.Header> <Card.Section> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Card.Section> </Card.Container> <Card.Container elevation=\"lowest\"> <Card.Figure> <img src={IMAGE_BACKGROUND} /> </Card.Figure> <Card.Header> Ocean Rockies <Spacer /> <Badge>LOWEST</Badge> </Card.Header> <Card.Section> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Card.Section> </Card.Container> <Card.Container elevation=\"lower\"> <Card.Figure> <img src={IMAGE_BACKGROUND} /> </Card.Figure> <Card.Header> Ocean Rockies <Spacer /> <Badge>LOWER</Badge> </Card.Header> <Card.Section> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Card.Section> </Card.Container> <Card.Container elevation=\"low\"> <Card.Figure> <img src={IMAGE_BACKGROUND} /> </Card.Figure> <Card.Header> Ocean Rockies <Spacer /> <Badge>LOW</Badge> </Card.Header> <Card.Section> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Card.Section> </Card.Container> <Card.Container elevation=\"medium\"> <Card.Figure> <img src={IMAGE_BACKGROUND} /> </Card.Figure> <Card.Header> Ocean Rockies <Spacer /> <Badge>MEDIUM</Badge> </Card.Header> <Card.Section> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Card.Section> </Card.Container> <Card.Container elevation=\"high\"> <Card.Figure> <img src={IMAGE_BACKGROUND} /> </Card.Figure> <Card.Header> Ocean Rockies <Spacer /> <Badge>HIGH</Badge> </Card.Header> <Card.Section> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Card.Section> </Card.Container> <Card.Container elevation=\"higher\"> <Card.Figure> <img src={IMAGE_BACKGROUND} /> </Card.Figure> <Card.Header> Ocean Rockies <Spacer /> <Badge>HIGHER</Badge> </Card.Header> <Card.Section> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Card.Section> </Card.Container> <Card.Container elevation=\"highest\"> <Card.Figure> <img src={IMAGE_BACKGROUND} /> </Card.Figure> <Card.Header> Ocean Rockies <Spacer /> <Badge>HIGHEST</Badge> </Card.Header> <Card.Section> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Card.Section> </Card.Container> </Mosaic.Container> Orientation NOTE : Introduced feature in v0.3.5. NOTE : By passing an array, you can set responsive values . e.g. orientation={[\"desktop:vertical\", \"widescreen:vertical\"]} You can set the Card.Footer to render vertically via the orientation property. <script> import { Badge, Button, Card, Mosaic, Spacer, Text, } from \"@kahi-ui/framework\"; </script> <Mosaic.Container sizing=\"medium\" spacing=\"large\"> <Card.Container> <Card.Figure> <img src={IMAGE_BACKGROUND} /> </Card.Figure> <Card.Header> Ocean Rockies <Spacer /> <Badge>HORIZONTAL / DEFAULT</Badge> </Card.Header> <Card.Section> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Card.Section> <Card.Footer> <Button variation=\"clear\">Cancel</Button> <Button palette=\"accent\"> Book Flight </Button> </Card.Footer> </Card.Container> <Card.Container> <Card.Figure> <img src={IMAGE_BACKGROUND} /> </Card.Figure> <Card.Header> Ocean Rockies <Spacer /> <Badge>VERTICAL</Badge> </Card.Header> <Card.Section> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Card.Section> <Card.Footer orientation=\"vertical\" alignment_x=\"stretch\" > <Button palette=\"accent\"> Book Flight </Button> <Button variation=\"clear\">Cancel</Button> </Card.Footer> </Card.Container> </Mosaic.Container> Sizing NOTE : Introduced feature in v0.3.3. NOTE : By passing an array, you can set responsive values . e.g. sizing={[\"tiny\", \"tablet:medium\", \"mobile:medium\"]} You can change the sizes / spacings of the child elements via the sizing property. <script> import { Card, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container class=\"card-sizing\" orientation=\"horizontal\" spacing=\"medium\" alignment_y=\"top\" variation=\"wrap\" > <Card.Container> <Card.Header>DEFAULT</Card.Header> <Card.Section> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Card.Section> </Card.Container> <Card.Container sizing=\"nano\"> <Card.Header>NANO</Card.Header> <Card.Section> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Card.Section> </Card.Container> <Card.Container sizing=\"tiny\"> <Card.Header>TINY</Card.Header> <Card.Section> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Card.Section> </Card.Container> <Card.Container sizing=\"small\"> <Card.Header>SMALL</Card.Header> <Card.Section> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Card.Section> </Card.Container> <Card.Container sizing=\"medium\"> <Card.Header>MEDIUM</Card.Header> <Card.Section> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Card.Section> </Card.Container> <Card.Container sizing=\"large\"> <Card.Header>LARGE</Card.Header> <Card.Section> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Card.Section> </Card.Container> <Card.Container sizing=\"huge\"> <Card.Header>HUGE</Card.Header> <Card.Section> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Card.Section> </Card.Container> <Card.Container sizing=\"massive\"> <Card.Header>MASSIVE</Card.Header> <Card.Section> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. </Text> </Card.Section> </Card.Container> </Stack.Container> <style> :global(.card-sizing > .card) { max-width: 35ch; } </style> Flush NOTE : Introduced feature in v0.2.13. You can change the appearance of the Card to be flush with the rest of the Application content via the variation property. <script> import { Badge, Button, Card, Spacer, Text, } from \"@kahi-ui/framework\"; </script> <Card.Container class=\"card-flush\" variation=\"flush\"> <Card.Figure> <img src={IMAGE_BACKGROUND} /> </Card.Figure> <Card.Header> Ocean Rockies <Spacer /> <Badge palette=\"affirmative\">AVAILABLE</Badge> </Card.Header> <Card.Section> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </Card.Section> <Card.Footer> <Button palette=\"accent\">Book Flight</Button> </Card.Footer> </Card.Container> <style> :global(.card-flush) { max-width: 35ch; } </style> "},{"identifier":"/docs/surfaces/hero","title":"Hero","text":"Hero NOTE : Introduced feature in v0.2.0. Hero is a multi-part surface pattern for displaying banner text with subtitling and actions, typically used for landing pages, error messages, and loading placeholders. <script> import {Button, Hero} from \"@kahi-ui/framework\"; </script> <Hero.Container palette=\"negative\" height=\"100\"> <Hero.Header>404</Hero.Header> <Hero.Section> The page you tried to access is missing or no longer available. </Hero.Section> <Hero.Footer> <Button palette=\"light\" variation=\"clear\"> Go Back </Button> <Button palette=\"accent\">Submit Ticket</Button> </Hero.Footer> </Hero.Container> Imports <script> import {Hero} from \"@kahi-ui/framework\"; const {Container, Footer, Header, Section} = Hero; </script> Palette You can change the color palette of the Hero via the palette property. <script> import { Button, Hero, Stack, } from \"@kahi-ui/framework\"; </script> <Stack.Container spacing=\"medium\"> <Hero.Container> <Hero.Header>404</Hero.Header> <Hero.Section> The page you tried to access is missing or no longer available. </Hero.Section> <Hero.Footer>DEFAULT</Hero.Footer> </Hero.Container> <Hero.Container palette=\"accent\"> <Hero.Header>404</Hero.Header> <Hero.Section> The page you tried to access is missing or no longer available. </Hero.Section> <Hero.Footer>ACCENT</Hero.Footer> </Hero.Container> <Hero.Container palette=\"neutral\"> <Hero.Header>404</Hero.Header> <Hero.Section> The page you tried to access is missing or no longer available. </Hero.Section> <Hero.Footer>NEUTRAL</Hero.Footer> </Hero.Container> <Hero.Container palette=\"dark\"> <Hero.Header>404</Hero.Header> <Hero.Section> The page you tried to access is missing or no longer available. </Hero.Section> <Hero.Footer>DARK</Hero.Footer> </Hero.Container> <Hero.Container palette=\"light\"> <Hero.Header>404</Hero.Header> <Hero.Section> The page you tried to access is missing or no longer available. </Hero.Section> <Hero.Footer>LIGHT</Hero.Footer> </Hero.Container> <Hero.Container palette=\"affirmative\"> <Hero.Header>404</Hero.Header> <Hero.Section> The page you tried to access is missing or no longer available. </Hero.Section> <Hero.Footer>AFFIRMATIVE</Hero.Footer> </Hero.Container> <Hero.Container palette=\"informative\"> <Hero.Header>404</Hero.Header> <Hero.Section> The page you tried to access is missing or no longer available. </Hero.Section> <Hero.Footer>INFORMATIVE</Hero.Footer> </Hero.Container> <Hero.Container palette=\"negative\"> <Hero.Header>404</Hero.Header> <Hero.Section> The page you tried to access is missing or no longer available. </Hero.Section> <Hero.Footer>NEGATIVE</Hero.Footer> </Hero.Container> </Stack.Container> "},{"identifier":"/docs/surfaces/tile","title":"Tile","text":"Tile NOTE : Introduced feature in v0.2.1. Tile is a multi-part surface pattern for displaying a section of content in a short-form horizontal format. <script> import { Button, Text, Tile, } from \"@kahi-ui/framework\"; import {UserPlus, Slash} from \"lucide-svelte\"; </script> <Tile.Container width=\"content-max\"> <Tile.Figure> <img src={IMAGE_AVATAR} /> </Tile.Figure> <Tile.Section> <Tile.Header>NovacBN</Tile.Header> <Text> <Text is=\"small\"> joined 2018 &bullet; last online 2021/05/29 </Text> </Text> </Tile.Section> <Tile.Footer> <Button palette=\"affirmative\"> <UserPlus size=\"1em\" /> </Button> <Button palette=\"negative\"> <Slash size=\"1em\" /> </Button> </Tile.Footer> </Tile.Container> Imports <script> import {Tile} from \"@kahi-ui/framework\"; const { Container, Figure, Footer, Header, Section, } = Tile; </script> Palette You can change the color palette of the Tile via the palette property. <script> import { Stack, Text, Tile, } from \"@kahi-ui/framework\"; </script> <Stack.Container spacing=\"medium\"> <Tile.Container width=\"content-max\"> <Tile.Figure> <img src={IMAGE_AVATAR} /> </Tile.Figure> <Tile.Section> <Tile.Header>NovacBN</Tile.Header> <Text> <Text is=\"small\"> joined 2018 &bullet; last online 2021/05/29 </Text> </Text> </Tile.Section> <Tile.Footer> <Text is=\"small\">DEFAULT</Text> </Tile.Footer> </Tile.Container> <Tile.Container palette=\"accent\" width=\"content-max\" > <Tile.Figure> <img src={IMAGE_AVATAR} /> </Tile.Figure> <Tile.Section> <Tile.Header>NovacBN</Tile.Header> <Text> <Text is=\"small\"> joined 2018 &bullet; last online 2021/05/29 </Text> </Text> </Tile.Section> <Tile.Footer> <Text is=\"small\">ACCENT</Text> </Tile.Footer> </Tile.Container> <Tile.Container palette=\"neutral\" width=\"content-max\" > <Tile.Figure> <img src={IMAGE_AVATAR} /> </Tile.Figure> <Tile.Section> <Tile.Header>NovacBN</Tile.Header> <Text> <Text is=\"small\"> joined 2018 &bullet; last online 2021/05/29 </Text> </Text> </Tile.Section> <Tile.Footer> <Text is=\"small\">NEUTRAL</Text> </Tile.Footer> </Tile.Container> <Tile.Container palette=\"dark\" width=\"content-max\"> <Tile.Figure> <img src={IMAGE_AVATAR} /> </Tile.Figure> <Tile.Section> <Tile.Header>NovacBN</Tile.Header> <Text> <Text is=\"small\"> joined 2018 &bullet; last online 2021/05/29 </Text> </Text> </Tile.Section> <Tile.Footer> <Text is=\"small\">DARK</Text> </Tile.Footer> </Tile.Container> <Tile.Container palette=\"light\" width=\"content-max\" > <Tile.Figure> <img src={IMAGE_AVATAR} /> </Tile.Figure> <Tile.Section> <Tile.Header>NovacBN</Tile.Header> <Text> <Text is=\"small\"> joined 2018 &bullet; last online 2021/05/29 </Text> </Text> </Tile.Section> <Tile.Footer> <Text is=\"small\">LIGHT</Text> </Tile.Footer> </Tile.Container> <Tile.Container palette=\"alert\" width=\"content-max\" > <Tile.Figure> <img src={IMAGE_AVATAR} /> </Tile.Figure> <Tile.Section> <Tile.Header>NovacBN</Tile.Header> <Text> <Text is=\"small\"> joined 2018 &bullet; last online 2021/05/29 </Text> </Text> </Tile.Section> <Tile.Footer> <Text is=\"small\">ALERT</Text> </Tile.Footer> </Tile.Container> <Tile.Container palette=\"affirmative\" width=\"content-max\" > <Tile.Figure> <img src={IMAGE_AVATAR} /> </Tile.Figure> <Tile.Section> <Tile.Header>NovacBN</Tile.Header> <Text> <Text is=\"small\"> joined 2018 &bullet; last online 2021/05/29 </Text> </Text> </Tile.Section> <Tile.Footer> <Text is=\"small\">AFFIRMATIVE</Text> </Tile.Footer> </Tile.Container> <Tile.Container palette=\"informative\" width=\"content-max\" > <Tile.Figure> <img src={IMAGE_AVATAR} /> </Tile.Figure> <Tile.Section> <Tile.Header>NovacBN</Tile.Header> <Text> <Text is=\"small\"> joined 2018 &bullet; last online 2021/05/29 </Text> </Text> </Tile.Section> <Tile.Footer> <Text is=\"small\">INFORMATIVE</Text> </Tile.Footer> </Tile.Container> <Tile.Container palette=\"negative\" width=\"content-max\" > <Tile.Figure> <img src={IMAGE_AVATAR} /> </Tile.Figure> <Tile.Section> <Tile.Header>NovacBN</Tile.Header> <Text> <Text is=\"small\"> joined 2018 &bullet; last online 2021/05/29 </Text> </Text> </Tile.Section> <Tile.Footer> <Text is=\"small\">NEGATIVE</Text> </Tile.Footer> </Tile.Container> </Stack.Container> Elevation NOTE : Introduced feature in v0.3.5. NOTE : By passing an array, you can set responsive values . e.g. elevation={[\"low\", \"tablet:lowest\", \"mobile:lowest\"]} You can set how \"high\" your Tile will appear to be over top the page via the elevation property. <script> import { Stack, Text, Tile, } from \"@kahi-ui/framework\"; </script> <Stack.Container spacing=\"large\"> <Tile.Container width=\"content-max\"> <Tile.Figure> <img src={IMAGE_AVATAR} /> </Tile.Figure> <Tile.Section> <Tile.Header>NovacBN</Tile.Header> <Text> <Text is=\"small\"> joined 2018 &bullet; last online 2021/05/29 </Text> </Text> </Tile.Section> <Tile.Footer> <Text is=\"small\">DEFAULT</Text> </Tile.Footer> </Tile.Container> <Tile.Container elevation=\"none\" width=\"content-max\" > <Tile.Figure> <img src={IMAGE_AVATAR} /> </Tile.Figure> <Tile.Section> <Tile.Header>NovacBN</Tile.Header> <Text> <Text is=\"small\"> joined 2018 &bullet; last online 2021/05/29 </Text> </Text> </Tile.Section> <Tile.Footer> <Text is=\"small\">NONE</Text> </Tile.Footer> </Tile.Container> <Tile.Container elevation=\"lowest\" width=\"content-max\" > <Tile.Figure> <img src={IMAGE_AVATAR} /> </Tile.Figure> <Tile.Section> <Tile.Header>NovacBN</Tile.Header> <Text> <Text is=\"small\"> joined 2018 &bullet; last online 2021/05/29 </Text> </Text> </Tile.Section> <Tile.Footer> <Text is=\"small\">LOWEST</Text> </Tile.Footer> </Tile.Container> <Tile.Container elevation=\"lower\" width=\"content-max\" > <Tile.Figure> <img src={IMAGE_AVATAR} /> </Tile.Figure> <Tile.Section> <Tile.Header>NovacBN</Tile.Header> <Text> <Text is=\"small\"> joined 2018 &bullet; last online 2021/05/29 </Text> </Text> </Tile.Section> <Tile.Footer> <Text is=\"small\">LOWER</Text> </Tile.Footer> </Tile.Container> <Tile.Container elevation=\"low\" width=\"content-max\" > <Tile.Figure> <img src={IMAGE_AVATAR} /> </Tile.Figure> <Tile.Section> <Tile.Header>NovacBN</Tile.Header> <Text> <Text is=\"small\"> joined 2018 &bullet; last online 2021/05/29 </Text> </Text> </Tile.Section> <Tile.Footer> <Text is=\"small\">LOW</Text> </Tile.Footer> </Tile.Container> <Tile.Container elevation=\"medium\" width=\"content-max\" > <Tile.Figure> <img src={IMAGE_AVATAR} /> </Tile.Figure> <Tile.Section> <Tile.Header>NovacBN</Tile.Header> <Text> <Text is=\"small\"> joined 2018 &bullet; last online 2021/05/29 </Text> </Text> </Tile.Section> <Tile.Footer> <Text is=\"small\">MEDIUM</Text> </Tile.Footer> </Tile.Container> <Tile.Container elevation=\"high\" width=\"content-max\" > <Tile.Figure> <img src={IMAGE_AVATAR} /> </Tile.Figure> <Tile.Section> <Tile.Header>NovacBN</Tile.Header> <Text> <Text is=\"small\"> joined 2018 &bullet; last online 2021/05/29 </Text> </Text> </Tile.Section> <Tile.Footer> <Text is=\"small\">HIGH</Text> </Tile.Footer> </Tile.Container> <Tile.Container elevation=\"highest\" width=\"content-max\" > <Tile.Figure> <img src={IMAGE_AVATAR} /> </Tile.Figure> <Tile.Section> <Tile.Header>NovacBN</Tile.Header> <Text> <Text is=\"small\"> joined 2018 &bullet; last online 2021/05/29 </Text> </Text> </Tile.Section> <Tile.Footer> <Text is=\"small\">HIGHEST</Text> </Tile.Footer> </Tile.Container> </Stack.Container> Orientation NOTE : Introduced feature in v0.3.5. NOTE : By passing an array, you can set responsive values . e.g. orientation={[\"desktop:vertical\", \"widescreen:vertical\"]} You can set the Tile.Footer to render vertically via the orientation property. <script> import { Button, Stack, Text, Tile, } from \"@kahi-ui/framework\"; import {UserPlus, Slash} from \"lucide-svelte\"; </script> <Stack.Container spacing=\"medium\"> <Tile.Container width=\"content-max\"> <Tile.Figure> <img src={IMAGE_AVATAR} /> </Tile.Figure> <Tile.Section> <Tile.Header>NovacBN</Tile.Header> <Text> <Text is=\"small\"> HORIZONTAL / DEFAULT </Text> </Text> </Tile.Section> <Tile.Footer> <Button palette=\"affirmative\"> <UserPlus size=\"1em\" /> </Button> <Button palette=\"negative\"> <Slash size=\"1em\" /> </Button> </Tile.Footer> </Tile.Container> <Tile.Container width=\"content-max\"> <Tile.Figure> <img src={IMAGE_AVATAR} /> </Tile.Figure> <Tile.Section> <Tile.Header>NovacBN</Tile.Header> <Text> <Text is=\"small\">VERTICAL</Text> </Text> </Tile.Section> <Tile.Footer orientation=\"vertical\"> <Button palette=\"affirmative\"> <UserPlus size=\"1em\" /> </Button> <Button palette=\"negative\"> <Slash size=\"1em\" /> </Button> </Tile.Footer> </Tile.Container> </Stack.Container> Sizing NOTE : Introduced feature in v0.3.3. NOTE : By passing an array, you can set responsive values . e.g. sizing={[\"tiny\", \"tablet:medium\", \"mobile:medium\"]} You can change the sizes / spacings of the child elements via the sizing property. <script> import { Stack, Text, Tile, } from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" alignment_y=\"top\" variation=\"wrap\" > <Tile.Container width=\"content-max\"> <Tile.Figure> <img src={IMAGE_AVATAR} /> </Tile.Figure> <Tile.Section> <Tile.Header>DEFAULT</Tile.Header> <Text> <Text is=\"small\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. </Text> </Text> </Tile.Section> </Tile.Container> <Tile.Container sizing=\"nano\" width=\"content-max\"> <Tile.Figure> <img src={IMAGE_AVATAR} /> </Tile.Figure> <Tile.Section> <Tile.Header>NANO</Tile.Header> <Text> <Text is=\"small\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. </Text> </Text> </Tile.Section> </Tile.Container> <Tile.Container sizing=\"tiny\" width=\"content-max\"> <Tile.Figure> <img src={IMAGE_AVATAR} /> </Tile.Figure> <Tile.Section> <Tile.Header>TINY</Tile.Header> <Text> <Text is=\"small\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. </Text> </Text> </Tile.Section> </Tile.Container> <Tile.Container sizing=\"small\" width=\"content-max\"> <Tile.Figure> <img src={IMAGE_AVATAR} /> </Tile.Figure> <Tile.Section> <Tile.Header>SMALL</Tile.Header> <Text> <Text is=\"small\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. </Text> </Text> </Tile.Section> </Tile.Container> <Tile.Container sizing=\"medium\" width=\"content-max\" > <Tile.Figure> <img src={IMAGE_AVATAR} /> </Tile.Figure> <Tile.Section> <Tile.Header>MEDIUM</Tile.Header> <Text> <Text is=\"small\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. </Text> </Text> </Tile.Section> </Tile.Container> <Tile.Container sizing=\"large\" width=\"content-max\"> <Tile.Figure> <img src={IMAGE_AVATAR} /> </Tile.Figure> <Tile.Section> <Tile.Header>LARGE</Tile.Header> <Text> <Text is=\"small\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. </Text> </Text> </Tile.Section> </Tile.Container> <Tile.Container sizing=\"huge\" width=\"content-max\"> <Tile.Figure> <img src={IMAGE_AVATAR} /> </Tile.Figure> <Tile.Section> <Tile.Header>HUGE</Tile.Header> <Text> <Text is=\"small\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. </Text> </Text> </Tile.Section> </Tile.Container> <Tile.Container sizing=\"massive\" width=\"content-max\" > <Tile.Figure> <img src={IMAGE_AVATAR} /> </Tile.Figure> <Tile.Section> <Tile.Header>MASSIVE</Tile.Header> <Text> <Text is=\"small\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. </Text> </Text> </Tile.Section> </Tile.Container> </Stack.Container> Flush NOTE : Introduced feature in v0.2.13. You can change the appearance of the Tile to be flush with the rest of the Application content via the variation property. <script> import { Button, Text, Tile, } from \"@kahi-ui/framework\"; import {UserPlus, Slash} from \"lucide-svelte\"; </script> <Tile.Container width=\"content-max\" variation=\"flush\"> <Tile.Figure> <img src={IMAGE_AVATAR} /> </Tile.Figure> <Tile.Section> <Tile.Header>NovacBN</Tile.Header> <Text> <Text is=\"small\"> joined 2018 &bullet; last online 2021/05/29 </Text> </Text> </Tile.Section> <Tile.Footer> <Button palette=\"affirmative\"> <UserPlus size=\"1em\" /> </Button> <Button palette=\"negative\"> <Slash size=\"1em\" /> </Button> </Tile.Footer> </Tile.Container> "},{"identifier":"/docs/themeing/custom-properties","title":"Custom Properties","text":"Custom Properties WARNING : All CSS Custom Properties are considered unstable and subject to change before v1.0. In supporting Components and for the global theme, you can use CSS Custom Properties to alter the look and feel of the Framework. Via Style You can customize the Custom Properties via inline styles as shown below. <script> import {Button} from \"@kahi-ui/framework\"; </script> <Button style=\"--button-padding-y:5;\"> I was customized via style! </Button> Via Classes You can also use CSS classes to customize them as well. <script> import {Button} from \"@kahi-ui/framework\"; </script> <Button class=\"custom-properties-class\"> I was customized via a class! </Button> <style> :global(.custom-properties-class) { --button-padding-y: 5; } </style> Via Global Stylesheet IMPORTANT : Make sure to declare your customized Custom Properties after you have loaded the Framework + Theme stylesheets. Otherwise they will be ignored. You can finally use global stylesheets to keep all your customizations in one spot. <!-- prettier-ignore --> <html> <head> <link rel=\"stylesheet\" href=\"/path/to/kahi-ui.framework.css\" /> <link rel=\"stylesheet\" href=\"/path/to/kahi-ui.theme.default.css\" /> <style> :root { --button-padding-y: 5; } </style> </head> <body> ... </body> </html> "},{"identifier":"/docs/themeing/custom-themes","title":"Custom Themes","text":"Custom Themes WARNING : When using manual builds of Kahi UI, you'll need to rebuild the distributables every time you upgrade Kahi UI. If you want a more compreshensive customization of Kahi UI's look and feel, you can use the Framework's Custom Builds system to produce your own distributables. Prerequisites Make sure to familiarize yourself with Framework's Custom Builds system before starting. It's also recommended to learn SASS as-well. Global Theme After having Kahi UI's source code downloaded and installed, edit the src/themes/default/_theme.scss stylesheet. This file contains all the non-Component specific definitions that apply every where in the Framework. Which is broken up into the headers as seen below. Palettes IMPORTANT : You must ALWAYS include accent, dark, light, neutral, and off color palettes when modifying the theme. These definitions relate to the Framework's overall color design. By default, we use the Framework's palette generation system, which mixes the base color into the dark and light colors to produce the various shades that Kahi UI uses in its color design. USAGE : When using the generative color system, the dark and light palettes ALWAYS needs to come first. USAGE : When using the generative color system, the foreground color will be automatically selected from the dark and light palettes based on contrast. <!-- prettier-ignore --> @include constants.define( generators.darklight( $dark: ( // Base color used to generate shades, can be in any color space \"base\": <COLOR>, // How much of the `light` palette should be mixed into the base color per shade \"stepping\": <PERCENTAGE>, ), $light: ( // Base color used to generate shades, can be in any color space \"base\": <COLOR>, // How much of the `dark` palette should be mixed into the base color per shade \"stepping\": <PERCENTAGE>, ) ) ); @include constants.define( ( \"palettes\": ( \"<PALETTE>\": generators.palette( $dark: ( // Base darkmode color used to generate shades, can be in any color \"base\": <COLOR>, // How much of the `dark` palette should be mixed into the base color per shade \"stepping\": <PERCENTAGE>, ), $light: ( // Base lightmode color used to generate shades, can be in any color \"base\": <COLOR>, // How much of the `light` palette should be mixed into the base color per shade \"stepping\": <PERCENTAGE>, ) ), ), ) ); Alternatively, you can opt-out of the generative color system and manually specify each palette individually. USAGE : Keep in mind that the shading scale used in Kahi UI is lightest blends in the most with the background color and boldest is the least. <!-- prettier-ignore --> @include constants.define( ( \"palettes\": ( \"<PALETTE>\": ( \"dark\": ( \"base\": <COLOR>, // Which palette color is used to contrast with this definition, e.g. for \"foreground\": \"<PALETTE>\", \"lightest\": <COLOR>, \"lighter\": <COLOR>, \"light\": <COLOR>, \"normal\": <COLOR>, \"bold\": <COLOR>, \"bolder\": <COLOR>, \"boldest\": <COLOR>, ), \"light\": ( \"base\": <COLOR>, // Which palette color is used to contrast with this definition, e.g. for \"foreground\": \"<PALETTE>\", \"lightest\": <COLOR>, \"lighter\": <COLOR>, \"light\": <COLOR>, \"normal\": <COLOR>, \"bold\": <COLOR>, \"bolder\": <COLOR>, \"boldest\": <COLOR>, ), ), ), ) ); As an example accent palette based on the default theme that ships with Kahi UI. @include constants.define( ( \"palettes\": ( \"accent\": ( \"dark\": ( \"base\": hsl(200deg, 25%, 47.5%), \"foreground\": \"light\", \"lightest\": hsl(201deg, 24%, 40%), \"lighter\": hsl(200deg, 24%, 42%), \"light\": hsl(200deg, 24%, 43%), \"normal\": hsl(200deg, 24%, 44%), \"bold\": hsl(200deg, 24%, 46%), \"bolder\": hsl(200deg, 25%, 47.5%), \"boldest\": hsl(199deg, 23%, 49%), ), \"light\": ( \"base\": hsl(200deg, 30%, 47.5%), \"foreground\": \"light\", \"lightest\": hsl(199deg, 26%, 57%), \"lighter\": hsl(200deg, 26%, 55%), \"light\": hsl(200deg, 26%, 53%), \"normal\": hsl(199deg, 27%, 51%), \"bold\": hsl(200deg, 27%, 49%), \"bolder\": hsl(200deg, 30%, 47.5%), \"boldest\": hsl(200deg, 29%, 46%), ), ), ), ) ); Viewports IMPORTANT : Viewports are NOT to be modified AT ALL . Due to Custom Media Queries not being supported at the moment by Browsers. These definitions relate to the Framework's Viewport breakpoints. Font Families IMPORTANT : You must ALWAYS include block, inline, and monospace font families when modifying the theme. These definitions relate to the font family stacks used across the Framework. @include variables.define( ( \"fonts.families\": ( \"<FAMILY>\": <FONT-STACK>, ), ) ); Font Line Heights IMPORTANT : These definitions must remain unitless! Components typically define their own unit depending on context. These definitions relate to the spacing between each line of text. By default we use Modular Scale to generate spacings. <!-- prettier-ignore --> @include variables.define( ( \"fonts\": ( \"line-heights\": generators.modular( $base: <BASE-MULTIPLIER>, $ratio: <RATIO> ), ), ) ); Alternatively, you can opt-out of the generative spacing system and manually specify each spacing individually. USAGE : Keep in mind that the spacing scale used in Kahi UI is nano is the smallest spacing and massive is the biggest. @include variables.define( ( \"fonts\": ( \"line-heights\": ( \"nano\": <MULTIPLIER>, \"tiny\": <MULTIPLIER>, \"small\": <MULTIPLIER>, \"medium\": <MULTIPLIER>, \"large\": <MULTIPLIER>, \"huge\": <MULTIPLIER>, \"massive\": <MULTIPLIER>, ), ), ) ); As an example based on the default theme that ships with Kahi UI. @include variables.define( ( \"fonts\": ( \"line-heights\": ( \"nano\": 1, \"tiny\": 1.075, \"small\": 1.155, \"medium\": 1.242, \"large\": 1.335, \"huge\": 1.435, \"massive\": 1.543, ), ), ) ); Font Sizings IMPORTANT : These definitions must remain unitless! Components typically define their own unit depending on context. IMPORTANT : You must ALWAYS include block and inline font sizings when modifying the theme. These definitions relate to the , typically used in . By default we use Modular Scale to generate sizings. <!-- prettier-ignore --> @include variables.define( ( \"fonts\": ( \"sizes\": ( \"<TIER>\": generators.modular( $base: <BASE-MULTIPLIER>, $ratio: <RATIO> ), ), ), ) ); Alternatively, you can opt-out of the generative sizing system and manually specify each sizing individually. USAGE : Keep in mind that the sizing scale used in Kahi UI is nano is the smallest and massive is the biggest. @include variables.define( ( \"fonts\": ( \"sizes\": ( \"<TIER>\": ( \"nano\": <MULTIPLIER>, \"tiny\": <MULTIPLIER>, \"small\": <MULTIPLIER>, \"medium\": <MULTIPLIER>, \"large\": <MULTIPLIER>, \"huge\": <MULTIPLIER>, \"massive\": <MULTIPLIER>, ), ), ), ) ); As an example based on the inline tier that the default theme that ships with Kahi UI. @include variables.define( ( \"fonts\": ( \"sizes\": ( \"inline\": ( \"nano\": 0.75, \"tiny\": 0.866, \"small\": 1, \"medium\": 1.155, \"large\": 1.334, \"huge\": 1.541, \"massive\": 1.78, ), ), ), ) ); Spacing Tiers IMPORTANT : These definitions must remain unitless! Components typically define their own unit depending on context. IMPORTANT : You must ALWAYS include block and inline spacings when modifying the theme. These definitions relate to spacing modifiers, typically used in Layout Components, letter spacings, or global intrinsics properties like margin. By default we use Modular Scale to generate spacings. <!-- prettier-ignore --> @include variables.define( ( \"spacings\": ( \"<TIER>\": generators.modular( $base: <BASE-MULTIPLIER>, $ratio: <RATIO> ), ), ) ); Alternatively, you can opt-out of the generative spacing system and manually specify each spacing individually. USAGE : Keep in mind that the spacing scale used in Kahi UI massive is the biggest and nano is the smallest. @include variables.define( ( \"spacings\": ( \"<TIER>\": ( \"nano\": <MULTIPLIER>, \"tiny\": <MULTIPLIER>, \"small\": <MULTIPLIER>, \"medium\": <MULTIPLIER>, \"large\": <MULTIPLIER>, \"huge\": <MULTIPLIER>, \"massive\": <MULTIPLIER>, ), ), ) ); As an example based on the block tier that the default theme that ships with Kahi UI. @include variables.define( ( \"spacings\": ( \"block\": ( \"nano\": 0.125, \"tiny\": 0.25, \"small\": 0.5, \"medium\": 1, \"large\": 2, \"huge\": 4, \"massive\": 8, ), ), ) ); Spacing Constants These definitions relate to spacing modifiers, used for global intrinsics properties like margin. @include constants.define( ( \"spacings\": ( \"<CONSTANT>\": <SPACING>, ), ) ); Size Tiers IMPORTANT : These definitions must remain unitless! Components typically define their own unit depending on context. IMPORTANT : You must ALWAYS include block sizings when modifying the theme. These definitions relate to size modifiers, used for global intrinsics properties like width. By default we use Modular Scale to generate sizes. <!-- prettier-ignore --> @include variables.define( ( \"sizes\": ( \"<TIER>\": generators.modular( $base: <BASE-MULTIPLIER>, $ratio: <RATIO> ), ), ) ); Alternatively, you can opt-out of the generative size system and manually specify each size individually. USAGE : Keep in mind that the size scale used in Kahi UI is nano is the smallest and massive is the biggest. @include variables.define( ( \"sizes\": ( \"<TIER>\": ( \"nano\": <MULTIPLIER>, \"tiny\": <MULTIPLIER>, \"small\": <MULTIPLIER>, \"medium\": <MULTIPLIER>, \"large\": <MULTIPLIER>, \"huge\": <MULTIPLIER>, \"massive\": <MULTIPLIER>, ), ), ) ); As an example based on the block tier that the default theme that ships with Kahi UI. @include variables.define( ( \"sizes\": ( \"block\": ( \"nano\": 9.5, \"tiny\": 11.4, \"small\": 13.68, \"medium\": 16.416, \"large\": 19.699, \"huge\": 23.639, \"massive\": 28.366, ), ), ) ); Size Constants These definitions relate to size modifiers, used for global intrinsics properties like width. @include constants.define( ( \"sizes\": ( \"<CONSTANT>\": <SPACING>, ), ) ); Radius Sizes IMPORTANT : These definitions must remain unitless! Components typically define their own unit depending on context. These definitions relate to sizing modifiers, typically used for Component radii and global radius properties. By default we use Modular Scale to generate sizes. <!-- prettier-ignore --> @include variables.define( ( \"radius\": generators.modular( $base: <BASE-MULTIPLIER>, $ratio: <RATIO> ) ), ) ); Alternatively, you can opt-out of the generative size system and manually specify each individually. USAGE : Keep in mind that the size scale used in Kahi UI is nano is the smallest and massive is the biggest. @include variables.define( ( \"radius\": ( \"nano\": <MULTIPLIER>, \"tiny\": <MULTIPLIER>, \"small\": <MULTIPLIER>, \"medium\": <MULTIPLIER>, \"large\": <MULTIPLIER>, \"huge\": <MULTIPLIER>, \"massive\": <MULTIPLIER>, ), ) ); As an example based on the default theme that ships with Kahi UI. @include variables.define( ( \"radius\": ( \"nano\": 0.125, \"tiny\": 0.25, \"small\": 0.5, \"medium\": 1, \"large\": 2, \"huge\": 4, \"massive\": 8, ), ) ); Radius Constants These definitions relate to border radius modifiers, used for global intrinsics properties like shape. @include constants.define( ( \"radius\": ( \"<CONSTANT>\": <SPACING>, ), ) ); Easings TODO : documentation ... Animations TODO : documentation ... Z-Index TODO : documentation ... Elevations TODO : documentation ... Component Theme Components are usually have this or similar directory structure depending on format (multi-pattern or singular). src/lib/components/:category/:component │ └───:component.scss // Stylesheet for Component └───:component.default.scss // `default` Theme Variables for Component └───:Component.svelte // Component Implementation └───:Component.stories.svelte // Storybook Tests └───index.ts // Exports Entry Point You can edit each Component's :component.default.css stylesheet to modify its default theme, just like with the global theme. Using the Badge Component as an example, the stylesheets typically look similar to this. <!-- prettier-ignore --> @use \"../../../../framework/abstracts/variables\"; // NOTE: By using this if statement, `--disable-components-display-badge` turns off this file in custom builds @if not env(\"DISABLE_COMPONENTS_DISPLAY_BADGE\") { // NOTE: Every identifier + dot path is treated is treated as a namespaced CSS Custom Property, // e.g. `badge.background.opacity` will be built as `--badge-background-opacity` @include variables.define( ( \"badge\": ( // NOTE: Whenever a namespace only has one (1) member instead of multiple, we can // just shortcut to using a period instead of creating a new map like the `font` namespace \"background.opacity\": 1, \"border.radius\": none, \"color.opacity\": 1, \"font\": ( // NOTE: `variables.use` is used to look up variables registered to the global // themeing variables. This allows the build process to validate our variables exist \"size\": variables.use(\"fonts.sizes.inline.nano\"), \"weight\": bold, ), \"gap\": ( \"x\": variables.use(\"spacings.block.small\"), \"y\": variables.use(\"spacings.block.small\"), ), \"padding\": ( \"x\": variables.use(\"spacings.block.small\"), \"y\": variables.use(\"spacings.block.nano\"), ), ), ) ); } For detailed documentation on what each Component's variables are, visit their documentation page and scroll down to the API Reference. "},{"identifier":"/docs/themeing/elevations","title":"Elevations","text":"Elevations Kahi UI uses box shadows to convey the physicality of \"how far hovering above the page\" any given Component is. <script> import {Stack, Text} from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"large\" variation=\"wrap\" > <div> <Text is=\"strong\">LOWEST</Text> <div data-size=\"icon-massive\" style=\"box-shadow:var(--elevations-lowest);\" /> </div> <div> <Text is=\"strong\">LOWER</Text> <div data-size=\"icon-massive\" style=\"box-shadow:var(--elevations-lower);\" /> </div> <div> <Text is=\"strong\">LOW</Text> <div data-size=\"icon-massive\" style=\"box-shadow:var(--elevations-low);\" /> </div> <div> <Text is=\"strong\">MEDIUM</Text> <div data-size=\"icon-massive\" style=\"box-shadow:var(--elevations-medium);\" /> </div> <div> <Text is=\"strong\">HIGH</Text> <div data-size=\"icon-massive\" style=\"box-shadow:var(--elevations-high);\" /> </div> <div> <Text is=\"strong\">HIGHER</Text> <div data-size=\"icon-massive\" style=\"box-shadow:var(--elevations-higher);\" /> </div> <div> <Text is=\"strong\">HIGHEST</Text> <div data-size=\"icon-massive\" style=\"box-shadow:var(--elevations-highest);\" /> </div> </Stack.Container> "},{"identifier":"/docs/themeing/fonts","title":"Fonts","text":"Fonts IMPORTANT : Font size CSS Custom Properties are defined as a unitless multipliers, so Components can customize scaling based on context. Kahi UI in its default theme uses Modular Scale to produce generative font size and line height tiers used throughout the Framework. Families Kahi UI provides a few standard font stacks used in different places across the Framework. <script> import {Stack, Text} from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div style=\"max-width:25ch;\"> <Text is=\"strong\">BLOCK</Text> <p style=\"font-family:var(--fonts-families-block);\" > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </p> </div> <div style=\"max-width:25ch;\"> <Text is=\"strong\">INLINE</Text> <p style=\"font-family:var(--fonts-families-inline);\" > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </p> </div> <div style=\"max-width:25ch;\"> <Text is=\"strong\">MONOSPACE</Text> <p style=\"font-family:var(--fonts-families-monospace);\" > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </p> </div> </Stack.Container> Line Heights Kahi UI typically uses line heights, that is, spacing between lines of text, to make things easier to read or to provide extra padding. <script> import {Stack, Text} from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div style=\"max-width:25ch;\"> <Text is=\"strong\">NANO</Text> <p style=\"line-height:calc(var(--fonts-line-heights-nano) * 1rem);\" > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </p> </div> <div style=\"max-width:25ch;\"> <Text is=\"strong\">TINY</Text> <p style=\"line-height:calc(var(--fonts-line-heights-tiny) * 1rem);\" > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </p> </div> <div style=\"max-width:25ch;\"> <Text is=\"strong\">SMALL</Text> <p style=\"line-height:calc(var(--fonts-line-heights-small) * 1rem);\" > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </p> </div> <div style=\"max-width:25ch;\"> <Text is=\"strong\">MEDIUM</Text> <p style=\"line-height:calc(var(--fonts-line-heights-medium) * 1rem);\" > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </p> </div> <div style=\"max-width:25ch;\"> <Text is=\"strong\">LARGE</Text> <p style=\"line-height:calc(var(--fonts-line-heights-large) * 1rem);\" > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </p> </div> <div style=\"max-width:25ch;\"> <Text is=\"strong\">HUGE</Text> <p style=\"line-height:calc(var(--fonts-line-heights-huge) * 1rem);\" > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </p> </div> <div style=\"max-width:25ch;\"> <Text is=\"strong\">MASSIVE</Text> <p style=\"line-height:calc(var(--fonts-line-heights-massive) * 1rem);\" > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </p> </div> </Stack.Container> Inline Sizes Kahi UI typically uses inline font sizes for text that is meant to be composed inside other content. Or blocks of text that the user is meant to read. <script> import {Stack, Text} from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div style=\"max-width:25ch;\"> <Text is=\"strong\">NANO</Text> <p style=\"font-size:calc(var(--fonts-sizes-inline-nano) * 1rem);\" > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </p> </div> <div style=\"max-width:25ch;\"> <Text is=\"strong\">TINY</Text> <p style=\"font-size:calc(var(--fonts-sizes-inline-tiny) * 1rem);\" > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </p> </div> <div style=\"max-width:25ch;\"> <Text is=\"strong\">SMALL</Text> <p style=\"font-size:calc(var(--fonts-sizes-inline-small) * 1rem);\" > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </p> </div> <div style=\"max-width:25ch;\"> <Text is=\"strong\">MEDIUM</Text> <p style=\"font-size:calc(var(--fonts-sizes-inline-medium) * 1rem);\" > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </p> </div> <div style=\"max-width:25ch;\"> <Text is=\"strong\">LARGE</Text> <p style=\"font-size:calc(var(--fonts-sizes-inline-large) * 1rem);\" > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </p> </div> <div style=\"max-width:25ch;\"> <Text is=\"strong\">HUGE</Text> <p style=\"font-size:calc(var(--fonts-sizes-inline-huge) * 1rem);\" > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </p> </div> <div style=\"max-width:25ch;\"> <Text is=\"strong\">MASSIVE</Text> <p style=\"font-size:calc(var(--fonts-sizes-inline-massive) * 1rem);\" > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </p> </div> </Stack.Container> Block Sizes Kahi UI typically uses block font sizes for giant headlining text that is small in length that needs to capture the user's attention. <script> import {Stack, Text} from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div style=\"max-width:25ch;\"> <Text is=\"strong\">NANO</Text> <p style=\"font-size:calc(var(--fonts-sizes-block-nano) * 1rem);\" > Lorem ipsum dolor sit amet, consectetur adipiscing elit. </p> </div> <div style=\"max-width:25ch;\"> <Text is=\"strong\">TINY</Text> <p style=\"font-size:calc(var(--fonts-sizes-block-tiny) * 1rem);\" > Lorem ipsum dolor sit amet, consectetur adipiscing elit. </p> </div> <div style=\"max-width:25ch;\"> <Text is=\"strong\">SMALL</Text> <p style=\"font-size:calc(var(--fonts-sizes-block-small) * 1rem);\" > Lorem ipsum dolor sit amet, consectetur adipiscing elit. </p> </div> <div style=\"max-width:25ch;\"> <Text is=\"strong\">MEDIUM</Text> <p style=\"font-size:calc(var(--fonts-sizes-block-medium) * 1rem);\" > Lorem ipsum dolor sit amet, consectetur adipiscing elit. </p> </div> <div style=\"max-width:25ch;\"> <Text is=\"strong\">LARGE</Text> <p style=\"font-size:calc(var(--fonts-sizes-block-large) * 1rem);\" > Lorem ipsum dolor sit amet, consectetur adipiscing elit. </p> </div> <div style=\"max-width:25ch;\"> <Text is=\"strong\">HUGE</Text> <p style=\"font-size:calc(var(--fonts-sizes-block-huge) * 1rem);\" > Lorem ipsum dolor sit amet, consectetur adipiscing elit. </p> </div> <div style=\"max-width:25ch;\"> <Text is=\"strong\">MASSIVE</Text> <p style=\"font-size:calc(var(--fonts-sizes-block-massive) * 1rem);\" > Lorem ipsum dolor sit amet, consectetur adipiscing elit. </p> </div> </Stack.Container> "},{"identifier":"/docs/themeing/manual-mode","title":"Manual Mode","text":"Manual Mode By default, Kahi UI switches between dark and light mode depending on the user's preferences. As reported by the Browser / OS. However to provide a theme toggle or if you want to disable this behavior. You can use the data-mode=\"dark/light\" attribute on the <html> element. <!-- prettier-ignore --> <html data-mode=\"dark\"> <head> ... </head> </html> "},{"identifier":"/docs/themeing/palettes","title":"Palettes","text":"Palettes IMPORTANT : Palette CSS Custom Properties are defined as a hue, saturation, lightness tuple, so Components can customize opacity based on context. Kahi UI in its default theme uses a simplistic generative palette generator, which mixes the dark and light colors in steps to produce shading. When producing palette shades, the \"lightest\" shade blends in the background the most and \"boldest\" shade stands out of the background the most. With the background palette depending on if the theme is in light or dark mode. In light mode using light as the background, and in dark mode using dark as the background. <script> import {Stack, Text} from \"@kahi-ui/framework\"; </script> <Stack.Container spacing=\"medium\"> <div> <Text is=\"strong\">ACCENT</Text> <Stack.Container orientation=\"horizontal\" alignment_x=\"stretch\" > <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-accent-background-lightest));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-accent-background-lighter));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-accent-background-light));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-accent-background-normal));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-accent-background-bold));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-accent-background-bolder));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-accent-background-boldest));\" /> </Stack.Container> </div> <div> <Text is=\"strong\">NEUTRAL</Text> <Stack.Container orientation=\"horizontal\" alignment_x=\"stretch\" > <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-neutral-background-lightest));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-neutral-background-lighter));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-neutral-background-light));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-neutral-background-normal));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-neutral-background-bold));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-neutral-background-bolder));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-neutral-background-boldest));\" /> </Stack.Container> </div> <div> <Text is=\"strong\">OFF</Text> <Stack.Container orientation=\"horizontal\" alignment_x=\"stretch\" > <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-off-background-lightest));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-off-background-lighter));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-off-background-light));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-off-background-normal));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-off-background-bold));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-off-background-bolder));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-off-background-boldest));\" /> </Stack.Container> </div> <div> <Text is=\"strong\">DARK</Text> <Stack.Container orientation=\"horizontal\" alignment_x=\"stretch\" > <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-dark-background-lightest));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-dark-background-lighter));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-dark-background-light));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-dark-background-normal));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-dark-background-bold));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-dark-background-bolder));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-dark-background-boldest));\" /> </Stack.Container> </div> <div> <Text is=\"strong\">LIGHT</Text> <Stack.Container orientation=\"horizontal\" alignment_x=\"stretch\" > <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-light-background-lightest));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-light-background-lighter));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-light-background-light));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-light-background-normal));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-light-background-bold));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-light-background-bolder));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-light-background-boldest));\" /> </Stack.Container> </div> <div> <Text is=\"strong\">ALERT</Text> <Stack.Container orientation=\"horizontal\" alignment_x=\"stretch\" > <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-alert-background-lightest));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-alert-background-lighter));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-alert-background-light));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-alert-background-normal));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-alert-background-bold));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-alert-background-bolder));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-alert-background-boldest));\" /> </Stack.Container> </div> <div> <Text is=\"strong\">AFFIRMATIVE</Text> <Stack.Container orientation=\"horizontal\" alignment_x=\"stretch\" > <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-affirmative-background-lightest));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-affirmative-background-lighter));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-affirmative-background-light));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-affirmative-background-normal));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-affirmative-background-bold));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-affirmative-background-bolder));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-affirmative-background-boldest));\" /> </Stack.Container> </div> <div> <Text is=\"strong\">INFORMATIVE</Text> <Stack.Container orientation=\"horizontal\" alignment_x=\"stretch\" > <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-informative-background-lightest));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-informative-background-lighter));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-informative-background-light));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-informative-background-normal));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-informative-background-bold));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-informative-background-bolder));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-informative-background-boldest));\" /> </Stack.Container> </div> <div> <Text is=\"strong\">NEGATIVE</Text> <Stack.Container orientation=\"horizontal\" alignment_x=\"stretch\" > <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-negative-background-lightest));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-negative-background-lighter));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-negative-background-light));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-negative-background-normal));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-negative-background-bold));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-negative-background-bolder));\" /> <div data-height=\"icon-massive\" style=\"background: hsl(var(--palettes-negative-background-boldest));\" /> </Stack.Container> </div> </Stack.Container> "},{"identifier":"/docs/themeing/sizes","title":"Sizes","text":"Sizes Kahi UI in its default theme uses Modular Scale and stepping scaling to produce generative size tiers used throughout the Framework. Block Sizes IMPORTANT : Block size CSS Custom Properties are defined as a unitless multipliers, so Components can customize scaling based on context. Kahi UI typically uses block sizes to show chunks of content in uniform sizes, such as Mosaic . <script> import {Stack, Text} from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"large\" variation=\"wrap\" > <div> <Text is=\"strong\">NANO</Text> <div data-height=\"icon-nano\" style=\"background:currentColor;width:calc(var(--sizes-block-nano) * 1rem);\" /> </div> <div> <Text is=\"strong\">TINY</Text> <div data-height=\"icon-nano\" style=\"background:currentColor;width:calc(var(--sizes-block-tiny) * 1rem);\" /> </div> <div> <Text is=\"strong\">SMALL</Text> <div data-height=\"icon-nano\" style=\"background:currentColor;width:calc(var(--sizes-block-small) * 1rem);\" /> </div> <div> <Text is=\"strong\">MEDIUM</Text> <div data-height=\"icon-nano\" style=\"background:currentColor;width:calc(var(--sizes-block-medium) * 1rem);\" /> </div> <div> <Text is=\"strong\">LARGE</Text> <div data-height=\"icon-nano\" style=\"background:currentColor;width:calc(var(--sizes-block-large) * 1rem);\" /> </div> <div> <Text is=\"strong\">HUGE</Text> <div data-height=\"icon-nano\" style=\"background:currentColor;width:calc(var(--sizes-block-huge) * 1rem);\" /> </div> <div> <Text is=\"strong\">MASSIVE</Text> <div data-height=\"icon-nano\" style=\"background:currentColor;width:calc(var(--sizes-block-massive) * 1rem);\" /> </div> </Stack.Container> Border Sizes Kahi UI uses border sizes to provide a standard set of border widths for Components. <script> import {Stack, Text} from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"large\" variation=\"wrap\" > <div> <Text is=\"strong\">NANO</Text> <div data-height=\"icon-nano\" style=\"background:currentColor;width:var(--sizes-borders-nano);\" /> </div> <div> <Text is=\"strong\">TINY</Text> <div data-height=\"icon-nano\" style=\"background:currentColor;width:var(--sizes-borders-tiny);\" /> </div> <div> <Text is=\"strong\">SMALL</Text> <div data-height=\"icon-nano\" style=\"background:currentColor;width:var(--sizes-borders-small);\" /> </div> <div> <Text is=\"strong\">MEDIUM</Text> <div data-height=\"icon-nano\" style=\"background:currentColor;width:var(--sizes-borders-medium);\" /> </div> <div> <Text is=\"strong\">LARGE</Text> <div data-height=\"icon-nano\" style=\"background:currentColor;width:var(--sizes-borders-large);\" /> </div> <div> <Text is=\"strong\">HUGE</Text> <div data-height=\"icon-nano\" style=\"background:currentColor;width:var(--sizes-borders-huge);\" /> </div> <div> <Text is=\"strong\">MASSIVE</Text> <div data-height=\"icon-nano\" style=\"background:currentColor;width:var(--sizes-borders-massive);\" /> </div> </Stack.Container> Icon Sizes Kahi UI provides icon sizes that reflect standard icon sizing used in other applications and environments. <script> import {Stack, Text} from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"large\" variation=\"wrap\" > <div> <Text is=\"strong\">NANO</Text> <div style=\"background:currentColor;width:var(--sizes-icon-nano);height:var(--sizes-icon-nano);\" /> </div> <div> <Text is=\"strong\">TINY</Text> <div style=\"background:currentColor;width:var(--sizes-icon-tiny);height:var(--sizes-icon-tiny);\" /> </div> <div> <Text is=\"strong\">SMALL</Text> <div style=\"background:currentColor;width:var(--sizes-icon-small);height:var(--sizes-icon-small);\" /> </div> <div> <Text is=\"strong\">MEDIUM</Text> <div style=\"background:currentColor;width:var(--sizes-icon-medium);height:var(--sizes-icon-medium);\" /> </div> <div> <Text is=\"strong\">LARGE</Text> <div style=\"background:currentColor;width:var(--sizes-icon-large);height:var(--sizes-icon-large);\" /> </div> <div> <Text is=\"strong\">HUGE</Text> <div style=\"background:currentColor;width:var(--sizes-icon-huge);height:var(--sizes-icon-huge);\" /> </div> <div> <Text is=\"strong\">MASSIVE</Text> <div style=\"background:currentColor;width:var(--sizes-icon-massive);height:var(--sizes-icon-massive);\" /> </div> </Stack.Container> Prose Size Kahi UI defines a single variable to determine how long a paragraph should get before being broken into a new line. <p style=\"border:1px solid currentColor;width:var(--sizes-prose);\" > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </p> "},{"identifier":"/docs/themeing/spacings","title":"Spacings","text":"Spacings IMPORTANT : Spacing CSS Custom Properties are defined as a unitless multipliers, so Components can customize scaling based on context. Kahi UI in its default theme uses Modular Scale to produce generative spacing tiers used throughout the Framework. Block Spacings Kahi UI typically uses block spacing for more obvious distinctions chunks of content, such as spacing between grid items. <script> import {Stack, Text} from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"large\" variation=\"wrap\" > <div> <Text is=\"strong\">NANO</Text> <div data-height=\"icon-nano\" style=\"background:currentColor;width:calc(var(--spacings-block-nano) * 1rem);\" /> </div> <div> <Text is=\"strong\">TINY</Text> <div data-height=\"icon-nano\" style=\"background:currentColor;width:calc(var(--spacings-block-tiny) * 1rem);\" /> </div> <div> <Text is=\"strong\">SMALL</Text> <div data-height=\"icon-nano\" style=\"background:currentColor;width:calc(var(--spacings-block-small) * 1rem);\" /> </div> <div> <Text is=\"strong\">MEDIUM</Text> <div data-height=\"icon-nano\" style=\"background:currentColor;width:calc(var(--spacings-block-medium) * 1rem);\" /> </div> <div> <Text is=\"strong\">LARGE</Text> <div data-height=\"icon-nano\" style=\"background:currentColor;width:calc(var(--spacings-block-large) * 1rem);\" /> </div> <div> <Text is=\"strong\">HUGE</Text> <div data-height=\"icon-nano\" style=\"background:currentColor;width:calc(var(--spacings-block-huge) * 1rem);\" /> </div> <div> <Text is=\"strong\">MASSIVE</Text> <div data-height=\"icon-nano\" style=\"background:currentColor;width:calc(var(--spacings-block-massive) * 1rem);\" /> </div> </Stack.Container> Inline Spacings Kahi UI typically uses inline spacing for more fine-grained visuals where subtlely is needed. Such as spacing between letters in categorization legends. <script> import {Stack, Text} from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"large\" variation=\"wrap\" > <div> <Text is=\"strong\">NANO</Text> <div data-height=\"icon-nano\" style=\"background:currentColor;width:calc(var(--spacings-inline-nano) * 1rem);\" /> </div> <div> <Text is=\"strong\">TINY</Text> <div data-height=\"icon-nano\" style=\"background:currentColor;width:calc(var(--spacings-inline-tiny) * 1rem);\" /> </div> <div> <Text is=\"strong\">SMALL</Text> <div data-height=\"icon-nano\" style=\"background:currentColor;width:calc(var(--spacings-inline-small) * 1rem);\" /> </div> <div> <Text is=\"strong\">MEDIUM</Text> <div data-height=\"icon-nano\" style=\"background:currentColor;width:calc(var(--spacings-inline-medium) * 1rem);\" /> </div> <div> <Text is=\"strong\">LARGE</Text> <div data-height=\"icon-nano\" style=\"background:currentColor;width:calc(var(--spacings-inline-large) * 1rem);\" /> </div> <div> <Text is=\"strong\">HUGE</Text> <div data-height=\"icon-nano\" style=\"background:currentColor;width:calc(var(--spacings-inline-huge) * 1rem);\" /> </div> <div> <Text is=\"strong\">MASSIVE</Text> <div data-height=\"icon-nano\" style=\"background:currentColor;width:calc(var(--spacings-inline-massive) * 1rem);\" /> </div> </Stack.Container> "},{"identifier":"/docs/typography/blockquote","title":"Blockquote","text":"Blockquote NOTE : Introduced feature in v0.2.5. Blockquote is typically used to render a block of text, that's attributed to a certain source of information. <script> import { Blockquote, Text, } from \"@kahi-ui/framework\"; </script> <Blockquote.Container max_width=\"prose\"> <Text margin_bottom=\"medium\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris porta, urna vel tristique varius, ipsum erat auctor odio, id imperdiet mauris velit eget quam. Donec viverra urna eu ligula eleifend, sed molestie lectus convallis. Nullam gravida placerat ex, sodales porttitor nibh. Suspendisse vitae nisi euismod, venenatis dui eu, hendrerit risus. Maecenas at hendrerit odio, at dictum nulla. Morbi tristique, augue vel blandit bibendum, mauris nibh finibus justo, ut mollis magna neque in lectus. </Text> <Text margin_bottom=\"medium\"> Sed dignissim, enim sit amet lobortis tincidunt, nibh risus elementum urna, vel tincidunt nisi elit vel tortor. Curabitur iaculis nulla nec odio efficitur, sit amet auctor odio mattis. Aenean quam arcu, feugiat non turpis eget, aliquet vestibulum lacus. </Text> <Blockquote.Cite>— Lorem Ipsum</Blockquote.Cite> </Blockquote.Container> Imports <script> import {Blockquote} from \"@kahi-ui/framework\"; const {Container, Cite} = Blockquote; </script> Palette You can change the color palette of the Blockquote.Container via the palette property. <script> import { Blockquote, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <Blockquote.Container max_width=\"prose\"> <Text margin_bottom=\"medium\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris porta, urna vel tristique varius, ipsum erat auctor odio, id imperdiet mauris velit eget quam. Donec viverra urna eu ligula eleifend, sed molestie lectus convallis. Nullam gravida placerat ex, sodales porttitor nibh. Suspendisse vitae nisi euismod, venenatis dui eu, hendrerit risus. </Text> <Blockquote.Cite>— DEFAULT</Blockquote.Cite> </Blockquote.Container> <Blockquote.Container max_width=\"prose\" palette=\"accent\" > <Text margin_bottom=\"medium\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris porta, urna vel tristique varius, ipsum erat auctor odio, id imperdiet mauris velit eget quam. Donec viverra urna eu ligula eleifend, sed molestie lectus convallis. Nullam gravida placerat ex, sodales porttitor nibh. Suspendisse vitae nisi euismod, venenatis dui eu, hendrerit risus. </Text> <Blockquote.Cite>— ACCENT</Blockquote.Cite> </Blockquote.Container> <Blockquote.Container max_width=\"prose\" palette=\"neutral\" > <Text margin_bottom=\"medium\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris porta, urna vel tristique varius, ipsum erat auctor odio, id imperdiet mauris velit eget quam. Donec viverra urna eu ligula eleifend, sed molestie lectus convallis. Nullam gravida placerat ex, sodales porttitor nibh. Suspendisse vitae nisi euismod, venenatis dui eu, hendrerit risus. </Text> <Blockquote.Cite>— NEUTRAL</Blockquote.Cite> </Blockquote.Container> <Blockquote.Container max_width=\"prose\" palette=\"dark\" > <Text margin_bottom=\"medium\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris porta, urna vel tristique varius, ipsum erat auctor odio, id imperdiet mauris velit eget quam. Donec viverra urna eu ligula eleifend, sed molestie lectus convallis. Nullam gravida placerat ex, sodales porttitor nibh. Suspendisse vitae nisi euismod, venenatis dui eu, hendrerit risus. </Text> <Blockquote.Cite>— DARK</Blockquote.Cite> </Blockquote.Container> <Blockquote.Container max_width=\"prose\" palette=\"light\" > <Text margin_bottom=\"medium\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris porta, urna vel tristique varius, ipsum erat auctor odio, id imperdiet mauris velit eget quam. Donec viverra urna eu ligula eleifend, sed molestie lectus convallis. Nullam gravida placerat ex, sodales porttitor nibh. Suspendisse vitae nisi euismod, venenatis dui eu, hendrerit risus. </Text> <Blockquote.Cite>— LIGHT</Blockquote.Cite> </Blockquote.Container> <Blockquote.Container max_width=\"prose\" palette=\"alert\" > <Text margin_bottom=\"medium\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris porta, urna vel tristique varius, ipsum erat auctor odio, id imperdiet mauris velit eget quam. Donec viverra urna eu ligula eleifend, sed molestie lectus convallis. Nullam gravida placerat ex, sodales porttitor nibh. Suspendisse vitae nisi euismod, venenatis dui eu, hendrerit risus. </Text> <Blockquote.Cite>— ALERT</Blockquote.Cite> </Blockquote.Container> <Blockquote.Container max_width=\"prose\" palette=\"affirmative\" > <Text margin_bottom=\"medium\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris porta, urna vel tristique varius, ipsum erat auctor odio, id imperdiet mauris velit eget quam. Donec viverra urna eu ligula eleifend, sed molestie lectus convallis. Nullam gravida placerat ex, sodales porttitor nibh. Suspendisse vitae nisi euismod, venenatis dui eu, hendrerit risus. </Text> <Blockquote.Cite> — AFFIRMATIVE </Blockquote.Cite> </Blockquote.Container> <Blockquote.Container max_width=\"prose\" palette=\"informative\" > <Text margin_bottom=\"medium\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris porta, urna vel tristique varius, ipsum erat auctor odio, id imperdiet mauris velit eget quam. Donec viverra urna eu ligula eleifend, sed molestie lectus convallis. Nullam gravida placerat ex, sodales porttitor nibh. Suspendisse vitae nisi euismod, venenatis dui eu, hendrerit risus. </Text> <Blockquote.Cite>— INFORMATIVE</Blockquote.Cite > </Blockquote.Container> <Blockquote.Container max_width=\"prose\" palette=\"negative\" > <Text margin_bottom=\"medium\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris porta, urna vel tristique varius, ipsum erat auctor odio, id imperdiet mauris velit eget quam. Donec viverra urna eu ligula eleifend, sed molestie lectus convallis. Nullam gravida placerat ex, sodales porttitor nibh. Suspendisse vitae nisi euismod, venenatis dui eu, hendrerit risus. </Text> <Blockquote.Cite>— NEGATIVE</Blockquote.Cite> </Blockquote.Container> </Stack.Container> "},{"identifier":"/docs/typography/code","title":"Code","text":"Code NOTE : Introduced feature in v0.2.0. Code is used to render inline monospaced text, typically for showing programming code / application configuration to an user. <script> import {Code} from \"@kahi-ui/framework\"; </script> <Code> import * as Kahi from \"@kahi-ui/framework\"; </Code> Imports <script> import {Code} from \"@kahi-ui/framework\"; </script> Palette You can change the color palette of Code via the palette property. <script> import { Code, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container alignment_x=\"left\" spacing=\"medium\"> <div> <Text is=\"strong\">DEFAULT</Text> <br /> <Code> import * as Kahi from \"@kahi-ui/framework\"; </Code> </div> <div> <Text is=\"strong\">ACCENT</Text> <br /> <Code palette=\"accent\"> import * as Kahi from \"@kahi-ui/framework\"; </Code> </div> <div> <Text is=\"strong\">NEUTRAL</Text> <br /> <Code palette=\"neutral\"> import * as Kahi from \"@kahi-ui/framework\"; </Code> </div> <div> <Text is=\"strong\">DARK</Text> <br /> <Code palette=\"dark\"> import * as Kahi from \"@kahi-ui/framework\"; </Code> </div> <div> <Text is=\"strong\">LIGHT</Text> <br /> <Code palette=\"light\"> import * as Kahi from \"@kahi-ui/framework\"; </Code> </div> <div> <Text is=\"strong\">ALERT</Text> <br /> <Code palette=\"alert\"> import * as Kahi from \"@kahi-ui/framework\"; </Code> </div> <div> <Text is=\"strong\">AFFIRMATIVE</Text> <br /> <Code palette=\"affirmative\"> import * as Kahi from \"@kahi-ui/framework\"; </Code> </div> <div> <Text is=\"strong\">INFORMATIVE</Text> <br /> <Code palette=\"informative\"> import * as Kahi from \"@kahi-ui/framework\"; </Code> </div> <div> <Text is=\"strong\">NEGATIVE</Text> <br /> <Code palette=\"negative\"> import * as Kahi from \"@kahi-ui/framework\"; </Code> </div> </Stack.Container> Code Block You can display blocks of code via a <pre> HTML tag by passing is=\"pre\". <!-- prettier-ignore --> <script> import {Code} from \"@kahi-ui/framework\"; </script> <Code is=\"pre\"> import math from \"a-math-library\"; const result = math.add(1, 1); console.log(\"Our value is:\", result); </Code> "},{"identifier":"/docs/typography/heading","title":"Heading","text":"Heading NOTE : Introduced feature in v0.2.0. Heading is typically used for delineating sections of content within your Web Application. <script> import {Heading} from \"@kahi-ui/framework\"; </script> <Heading> Lorem ipsum dolor sit amet, consectetur adipiscing elit. </Heading> Imports <script> import {Heading} from \"@kahi-ui/framework\"; </script> Sizing You can adjust the size of Heading by passing the is property. <script> import { Heading, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container class=\"heading-sizing-inline\" orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div> <Text is=\"strong\">H1</Text> <Heading is=\"h1\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. </Heading> </div> <div> <Text is=\"strong\">H2</Text> <Heading is=\"h2\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. </Heading> </div> <div> <Text is=\"strong\">H3</Text> <Heading is=\"h3\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. </Heading> </div> <div> <Text is=\"strong\">H4</Text> <Heading is=\"h4\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. </Heading> </div> <div> <Text is=\"strong\">H5</Text> <Heading is=\"h5\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. </Heading> </div> <div> <Text is=\"strong\">H6</Text> <Heading is=\"h6\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. </Heading> </div> </Stack.Container> <style> :global(.heading-sizing-inline > div) { max-width: 25ch; } </style> You can also access bigger font sizing via the variation property. <script> import { Heading, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container class=\"heading-sizing-block\" orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div> <Text is=\"strong\">H1</Text> <Heading is=\"h1\" variation=\"block\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. </Heading> </div> <div> <Text is=\"strong\">H2</Text> <Heading is=\"h2\" variation=\"block\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. </Heading> </div> <div> <Text is=\"strong\">H3</Text> <Heading is=\"h3\" variation=\"block\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. </Heading> </div> <div> <Text is=\"strong\">H4</Text> <Heading is=\"h4\" variation=\"block\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. </Heading> </div> <div> <Text is=\"strong\">H5</Text> <Heading is=\"h5\" variation=\"block\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. </Heading> </div> <div> <Text is=\"strong\">H6</Text> <Heading is=\"h6\" variation=\"block\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. </Heading> </div> </Stack.Container> <style> :global(.heading-sizing-block > div) { max-width: 25ch; } </style> Palette NOTE : Introduced feature in v0.2.16. You can change the color palette of Heading via the palette property. <script> import { Heading, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container class=\"heading-palette\" orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div> <Text is=\"strong\">DEFAULT</Text> <Heading> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. </Heading> </div> <div> <Text is=\"strong\">ACCENT</Text> <Heading palette=\"accent\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. </Heading> </div> <div> <Text is=\"strong\">NEUTRAL</Text> <Heading palette=\"neutral\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. </Heading> </div> <div> <Text is=\"strong\">DARK</Text> <Heading palette=\"dark\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. </Heading> </div> <div> <Text is=\"strong\">LIGHT</Text> <Heading palette=\"light\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. </Heading> </div> <div> <Text is=\"strong\">ALERT</Text> <Heading palette=\"alert\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. </Heading> </div> <div> <Text is=\"strong\">AFFIRMATIVE</Text> <Heading palette=\"affirmative\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. </Heading> </div> <div> <Text is=\"strong\">INFORMATIVE</Text> <Heading palette=\"informative\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. </Heading> </div> <div> <Text is=\"strong\">NEGATIVE</Text> <Heading palette=\"negative\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. </Heading> </div> </Stack.Container> <style> :global(.heading-palette > div) { max-width: 25ch; } </style> Alignment WARNING : This feature was renamed from align to alignment_x in v0.6.0 . You can adjust the text alignment of the Heading via the alignment_x property. <script> import { Heading, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container spacing=\"medium\"> <div> <Text is=\"strong\">DEFAULT</Text> <Heading> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. </Heading> </div> <div> <Text is=\"strong\">CENTER</Text> <Heading alignment_x=\"center\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. </Heading> </div> <div> <Text is=\"strong\">JUSTIFY</Text> <Heading alignment_x=\"justify\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. </Heading> </div> <div> <Text is=\"strong\">LEFT</Text> <Heading alignment_x=\"left\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. </Heading> </div> <div> <Text is=\"strong\">RIGHT</Text> <Heading alignment_x=\"right\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. </Heading> </div> </Stack.Container> Transform You can alter the rendered text capitalization via the transform property. <script> import { Heading, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container class=\"heading-transform\" orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div> <Text is=\"strong\">DEFAULT</Text> <Heading> Lorem ipsum dolor sit amet, consectetur adipiscing elit. </Heading> </div> <div> <Text is=\"strong\">CAPITALIZE</Text> <Heading transform=\"capitalize\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. </Heading> </div> <div> <Text is=\"strong\">LOWERCASE</Text> <Heading transform=\"lowercase\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. </Heading> </div> <div> <Text is=\"strong\">UPPERCASE</Text> <Heading transform=\"uppercase\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. </Heading> </div> </Stack.Container> <style> :global(.heading-transform > div) { max-width: 25ch; } </style> Variation You can apply variations to the rendered text, like truncating, via the variation property. <script> import { Heading, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container class=\"heading-variation\" spacing=\"medium\" > <div> <Text is=\"strong\">DEFAULT</Text> <Heading> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. </Heading> </div> <div> <Text is=\"strong\">TRUNCATE</Text> <Heading variation=\"truncate\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. </Heading> </div> </Stack.Container> <style> :global(.heading-variation > div) { max-width: 50ch; } </style> "},{"identifier":"/docs/typography/text","title":"Text","text":"Text NOTE : Introduced feature in v0.2.0. Text is used to render paragraphs of text in your interface, among other types of text. <script> import {Text} from \"@kahi-ui/framework\"; </script> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> Imports <script> import {Text} from \"@kahi-ui/framework\"; </script> Sizing WARNING : This feature was renamed from size to sizing in v0.6.0 . You can adjust the size of Text by passing the sizing property. <script> import {Stack, Text} from \"@kahi-ui/framework\"; </script> <Stack.Container class=\"text-sizing-inline\" orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div> <Text is=\"strong\">DEFAULT</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </div> <div> <Text is=\"strong\">NANO</Text> <Text sizing=\"nano\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </div> <div> <Text is=\"strong\">TINY</Text> <Text sizing=\"tiny\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </div> <div> <Text is=\"strong\">SMALL</Text> <Text sizing=\"small\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </div> <div> <Text is=\"strong\">MEDIUM</Text> <Text sizing=\"medium\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </div> <div> <Text is=\"strong\">LARGE</Text> <Text sizing=\"large\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </div> <div> <Text is=\"strong\">HUGE</Text> <Text sizing=\"huge\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </div> <div> <Text is=\"strong\">MASSIVE</Text> <Text sizing=\"massive\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </div> </Stack.Container> <style> :global(.text-sizing-inline > div) { max-width: 25ch; } </style> You can also access bigger font sizing via the variation property. <script> import {Stack, Text} from \"@kahi-ui/framework\"; </script> <Stack.Container class=\"text-sizing-block\" orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div> <Text is=\"strong\">DEFAULT</Text> <Text variation=\"block\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </div> <div> <Text is=\"strong\">NANO</Text> <Text sizing=\"nano\" variation=\"block\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </div> <div> <Text is=\"strong\">TINY</Text> <Text sizing=\"tiny\" variation=\"block\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </div> <div> <Text is=\"strong\">SMALL</Text> <Text sizing=\"small\" variation=\"block\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </div> <div> <Text is=\"strong\">MEDIUM</Text> <Text sizing=\"medium\" variation=\"block\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </div> <div> <Text is=\"strong\">LARGE</Text> <Text sizing=\"large\" variation=\"block\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </div> <div> <Text is=\"strong\">HUGE</Text> <Text sizing=\"huge\" variation=\"block\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </div> <div> <Text is=\"strong\">MASSIVE</Text> <Text sizing=\"massive\" variation=\"block\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </div> </Stack.Container> <style> :global(.text-sizing-block > div) { max-width: 25ch; } </style> Palette You can change the color palette of Text via the palette property. <script> import {Stack, Text} from \"@kahi-ui/framework\"; </script> <Stack.Container class=\"text-palette\" orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div> <Text is=\"strong\">DEFAULT</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </div> <div> <Text is=\"strong\">ACCENT</Text> <Text palette=\"accent\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </div> <div> <Text is=\"strong\">NEUTRAL</Text> <Text palette=\"neutral\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </div> <div> <Text is=\"strong\">DARK</Text> <Text palette=\"dark\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </div> <div> <Text is=\"strong\">LIGHT</Text> <Text palette=\"light\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </div> <div> <Text is=\"strong\">ALERT</Text> <Text palette=\"alert\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </div> <div> <Text is=\"strong\">AFFIRMATIVE</Text> <Text palette=\"affirmative\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </div> <div> <Text is=\"strong\">INFORMATIVE</Text> <Text palette=\"informative\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </div> <div> <Text is=\"strong\">NEGATIVE</Text> <Text palette=\"negative\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </div> </Stack.Container> <style> :global(.text-palette > div) { max-width: 25ch; } </style> Alignment WARNING : This feature was renamed from align to alignment_x in v0.6.0 . You can adjust the text alignment of the Text via the alignment_x property. <script> import {Stack, Text} from \"@kahi-ui/framework\"; </script> <Stack.Container spacing=\"medium\"> <div> <Text is=\"strong\">DEFAULT</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </div> <div> <Text is=\"strong\">CENTER</Text> <Text alignment_x=\"center\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </div> <div> <Text is=\"strong\">JUSTIFY</Text> <Text alignment_x=\"justify\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </div> <div> <Text is=\"strong\">LEFT</Text> <Text alignment_x=\"left\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </div> <div> <Text is=\"strong\">RIGHT</Text> <Text alignment_x=\"right\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </div> </Stack.Container> Transform You can alter the rendered text capitalization via the transform property. <script> import {Stack, Text} from \"@kahi-ui/framework\"; </script> <Stack.Container class=\"text-transform\" orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div> <Text is=\"strong\">DEFAULT</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </div> <div> <Text is=\"strong\">CAPITALIZE</Text> <Text transform=\"capitalize\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </div> <div> <Text is=\"strong\">LOWERCASE</Text> <Text transform=\"lowercase\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </div> <div> <Text is=\"strong\">UPPERCASE</Text> <Text transform=\"uppercase\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </div> </Stack.Container> <style> :global(.text-transform > div) { max-width: 25ch; } </style> Variation You can apply variations to the rendered text, like truncating, via the variation property. <script> import {Stack, Text} from \"@kahi-ui/framework\"; </script> <Stack.Container class=\"text-variation\" spacing=\"medium\" > <div> <Text is=\"strong\">DEFAULT</Text> <Text> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </div> <div> <Text is=\"strong\">TRUNCATE</Text> <Text variation=\"truncate\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin et consectetur orci. Curabitur a egestas turpis, vitae convallis sapien. Sed pellentesque rutrum tellus, in iaculis dolor tincidunt non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. </Text> </div> </Stack.Container> <style> :global(.text-variation > div) { max-width: 50ch; } </style> Elements WARNING : The feature <Text is=\"kbd\"> was moved to standalone Component <Kbd> in v0.6.0 . You can also access most of the other HTML text tags via the is property. <script> import {Stack, Text} from \"@kahi-ui/framework\"; </script> <Stack.Container alignment_x=\"left\" spacing=\"medium\"> <Text is=\"abbr\">Abbreviation</Text> <Text is=\"b\">Bold</Text> <Text is=\"strong\">Strong</Text> <Text is=\"del\">Deleted</Text> <Text is=\"s\">Strikethrough</Text> <Text is=\"em\">Emphasis</Text> <Text is=\"i\">Italic</Text> <Text is=\"ins\">Inserted</Text> <Text is=\"u\">Underline</Text> <Text is=\"mark\">Highlighted</Text> <Text is=\"samp\">Sample</Text> <Text is=\"sub\">sub</Text> <Text is=\"sup\">sup</Text> </Stack.Container> "},{"identifier":"/docs/utilities/animation","title":"Animation","text":"Animation NOTE : Introduced feature in v0.6.0. Animation is used to apply infinitely repeating animations on a containing element that will also include its children. Typically used for situations like alerting users to new E-Mail in their inbox, etc... <script> import { Animation, Button, Dot, Position, } from \"@kahi-ui/framework\"; </script> <Button palette=\"accent\"> Inbox <Position variation=\"indicator\"> <Animation animation=\"ping\"> <Dot palette=\"negative\" /> </Animation> </Position> </Button> Imports <script> import {Animation} from \"@kahi-ui/framework\"; </script> Delay Based on the animaton duration properties in the currently loaded theme. You can use a multiplier percentage decimal to delay it via the delay property. <script> import {Animation, Dot} from \"@kahi-ui/framework\"; </script> <Animation animation=\"bounce\"> <Dot palette=\"accent\" /> </Animation> <Animation animation=\"bounce\" delay={-0.75}> <Dot palette=\"accent\" /> </Animation> <Animation animation=\"bounce\" delay={-0.5}> <Dot palette=\"accent\" /> </Animation> <Animation animation=\"bounce\" delay={-0.25}> <Dot palette=\"accent\" /> </Animation> Duration Based on the animaton duration properties in the currently loaded theme. You can use a multiplier percentage decimal to increase / shorten the animation duration via the duration property. <script> import {Animation, Dot} from \"@kahi-ui/framework\"; </script> <Animation animation=\"bounce\" duration={0.25}> <Dot palette=\"accent\" /> </Animation> <Animation animation=\"bounce\"> <Dot palette=\"accent\" /> </Animation> <Animation animation=\"bounce\" duration={1.75}> <Dot palette=\"accent\" /> </Animation> <Animation animation=\"bounce\" duration={2.5}> <Dot palette=\"accent\" /> </Animation> Iterations You can control how many times the animation repeats before stopping via the iterations property. <script> import { Animation, Dot, NumberInput, } from \"@kahi-ui/framework\"; let iterations = 0; </script> <NumberInput bind:value={iterations} /> <!-- NOTE: CSS keeps the current iteration count if you only change the `animation-iteration-count` property. So we're using `{#key}` here to reset the internal counter --> {#key iterations} <Animation animation=\"bounce\" {iterations}> <Dot palette=\"accent\" /> </Animation> {/key} Variation You can control whether the animation is playing or paused via the variation property. <script> import { Animation, Button, Dot, } from \"@kahi-ui/framework\"; let variation = undefined; </script> <Button on:click={() => (variation = variation === \"pause\" ? \"play\" : \"pause\")} > Toggle Variation </Button> <Animation animation=\"bounce\" {variation}> <Dot palette=\"accent\" /> </Animation> Elements You can change the HTML tag rendered to DOM via the is property. <script> import { Animation, Box, Button, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container spacing=\"medium\" orientation=\"horizontal\" variation=\"wrap\" > <div> <Text is=\"strong\">DIV / BLOCK</Text> <Animation is=\"div\" animation=\"bounce\"> <Box palette=\"inverse\" padding=\"medium\"> I booouunce, I bounce so far awaaaaaay~! </Box> </Animation> </div> <div> <Text is=\"strong\">SPAN / INLINE</Text> <Animation is=\"span\" animation=\"bounce\"> <Box palette=\"inverse\" padding=\"medium\"> I booouunce, I bounce so far awaaaaaay~! </Box> </Animation> </div> </Stack.Container> Bounce You can have content \"bounce\" up and down via the animation property. <script> import {Animation, Dot} from \"@kahi-ui/framework\"; </script> <Animation animation=\"bounce\"> <Dot palette=\"accent\" /> </Animation> Ping You can have content \"explode\" outwards, fading as the animation is playing via the animation property. <script> import {Animation, Dot} from \"@kahi-ui/framework\"; </script> <Animation animation=\"ping\"> <Dot palette=\"accent\" /> </Animation> Pulse You can have content \"glow\" bright and dim via the animation property. <script> import {Animation, Dot} from \"@kahi-ui/framework\"; </script> <Animation animation=\"pulse\"> <Dot palette=\"accent\" /> </Animation> "},{"identifier":"/docs/utilities/browserrender","title":"BrowserRender","text":"BrowserRender NOTE : Introduced feature in v0.4.1. NOTE : This feature is renderless, meaning it does not render anything extra to the DOM. BrowserRender disables rendering of child content that either doesn't work in a SSR environment or doesn't make sense there. e.g. <canvas> rendering USAGE : REPL renders in your Browser, so this feature will always render the content. <script> import {BrowserRender} from \"@kahi-ui/framework\"; </script> <BrowserRender> This will only render on the Browser. </BrowserRender> Imports <script> import {BrowserRender} from \"@kahi-ui/framework\"; </script> "},{"identifier":"/docs/utilities/intersectionrender","title":"IntersectionRender","text":"IntersectionRender NOTE : Introduced feature in v0.4.1. IntersectionRender disables rendering of child content before it has come into the root element's viewport at least once. Useful for lazy loading content besides media. <script> import { Box, Code, IntersectionRender, Spacer, Transition, } from \"@kahi-ui/framework\"; let is_intersecting = false; </script> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Box palette={is_intersecting ? \"affirmative\" : \"negative\"} padding=\"small\" > Scroll down to watch this <Code>Box</Code> change when the <Code>Box</Code> comes into view. </Box> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <IntersectionRender threshold={0.5} bind:is_intersecting > <Transition animation=\"scale\" variation=\"enter\"> <Box palette=\"inverse\" padding=\"small\"> I am in view! </Box> </Transition> </IntersectionRender> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Box palette={is_intersecting ? \"affirmative\" : \"negative\"} padding=\"small\" > Scroll up to watch this <Code>Box</Code> change when the <Code>Box</Code> comes into view. </Box> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> Imports <script> import {IntersectionRender} from \"@kahi-ui/framework\"; </script> Compatibility The Component only runs on clientside Browsers with Javascript enabled. So you need to plan a SSR-compatible fallback if using in a SSR scenario. It is also dependent on IntersectionObserver . Eager NOTE : It is good practice to give the IntersectionRender a fixed size that generally matches the child content when using this mode. Otherwise you can end up with janky scrolling. You can change the behavior of IntersectionObserver by passing in the loading attribute. Which will make the Component ALWAYS disable rendering when outside of the root viewport, not just on initial load. <script> import { Box, Code, IntersectionRender, Spacer, Transition, } from \"@kahi-ui/framework\"; let is_intersecting = false; </script> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Box palette={is_intersecting ? \"affirmative\" : \"negative\"} padding=\"small\" > Scroll down to watch this <Code>Box</Code> change when the <Code>Box</Code> comes into view. </Box> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <IntersectionRender class=\"intersectionrender-eager\" loading=\"eager\" threshold={0.5} bind:is_intersecting > <Transition animation=\"scale\" variation=\"enter\"> <Box class=\"intersectionrender-eager\" palette=\"inverse\" padding=\"small\" > I am in view! </Box> </Transition> </IntersectionRender> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Box palette={is_intersecting ? \"affirmative\" : \"negative\"} padding=\"small\" > Scroll up to watch this <Code>Box</Code> change when the <Code>Box</Code> comes into view. </Box> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <style> :global(.intersectionrender-eager) { height: 40px; } </style> Fallthrough USAGE : REPL renders in your Browser, so this feature will always conditionally render anyway. By default, IntersectionRender will never render when running in SSR environments. You can change it to always render in those environments via the fallthrough property. <script> import { Box, Code, IntersectionRender, Spacer, Transition, } from \"@kahi-ui/framework\"; let is_intersecting = false; </script> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Box palette={is_intersecting ? \"affirmative\" : \"negative\"} padding=\"small\" > Scroll down to watch this <Code>Box</Code> change when the <Code>Box</Code> comes into view. </Box> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <IntersectionRender threshold={0.5} fallthrough bind:is_intersecting > <Transition animation=\"scale\" variation=\"enter\"> <Box palette=\"inverse\" padding=\"small\"> I am in view! </Box> </Transition> </IntersectionRender> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Box palette={is_intersecting ? \"affirmative\" : \"negative\"} padding=\"small\" > Scroll up to watch this <Code>Box</Code> change when the <Code>Box</Code> comes into view. </Box> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> <Spacer spacing=\"huge\" /> "},{"identifier":"/docs/utilities/mediaqueryrender","title":"MediaQueryRender","text":"MediaQueryRender NOTE : Introduced feature in v0.5.1. USAGE : REPL does not support viewport values, resize your Browser to observe this feature. MediaQueryRender disables rendering of child content while the provided Media Quer(y/eries) are not active. <script> import { Box, MediaQueryRender, } from \"@kahi-ui/framework\"; </script> <MediaQueryRender queries=\"(min-width: 1280px) and (min-height: 720px)\" > <Box palette=\"affirmative\" padding=\"small\"> This is only rendered when the Viewport is at least sHD resolution </Box> </MediaQueryRender> Imports <script> import {MediaQueryRender} from \"@kahi-ui/framework\"; </script> Compatibility The Component only runs on clientside Browsers with Javascript enabled. So you need to plan a SSR-compatible fallback if using in a SSR scenario. Multiple Queries USAGE : REPL does not support viewport values, resize your Browser to observe this feature. You can specify multiple Media Queries by passing in a string array (string[]) via the queries property. <script> import { Box, MediaQueryRender, Text, } from \"@kahi-ui/framework\"; </script> <MediaQueryRender queries={[ \"(min-width: 1280px) and (min-height: 720px)\", \"(aspect-ratio: 16/9)\", ]} > <Box palette=\"affirmative\" padding=\"small\"> This is only rendered when the Viewport is at least sHD resolution <Text is=\"strong\"> OR </Text> is 16:9. </Box> </MediaQueryRender> Behavior USAGE : REPL does not support viewport values, resize your Browser to observe this feature. When working with multiple Media Queries, you can specify that ALL Media Queries must be valid in order to render. Via the behavior property. <script> import { Box, MediaQueryRender, Text, } from \"@kahi-ui/framework\"; </script> <MediaQueryRender queries={[ \"(orientation: portrait)\", \"(pointer: coarse)\", ]} behavior=\"and\" > <Box palette=\"affirmative\" padding=\"small\"> This is only rendered when the Viewport is in a portrait orientation <Text is=\"strong\"> AND </Text> the main interaction device is touch. </Box> </MediaQueryRender> <MediaQueryRender queries={[ \"(orientation: landscape)\", \"(pointer: fine)\", ]} behavior=\"and\" > <Box palette=\"affirmative\" padding=\"small\"> This is only rendered when the Viewport is in a landscape orientation <Text is=\"strong\"> AND </Text> the main interaction device is mouse / stylus. </Box> </MediaQueryRender> Fallthrough USAGE : REPL renders in your Browser, so this feature will always conditionally render anyway. By default, MediaQueryRender will never render when running in SSR environments. You can change it to always render in those environments via the fallthrough property. <script> import { Box, MediaQueryRender, } from \"@kahi-ui/framework\"; </script> <MediaQueryRender queries=\"(prefers-color-scheme: dark)\" fallthrough > <Box palette=\"light\" padding=\"small\"> This is only rendered when the user's color preference is dark. </Box> </MediaQueryRender> <MediaQueryRender queries=\"(prefers-color-scheme: light)\" fallthrough > <Box palette=\"dark\" padding=\"small\"> This is only rendered when the user's color preference is light. </Box> </MediaQueryRender> "},{"identifier":"/docs/utilities/portal","title":"Portal","text":"Portal NOTE : Introduced feature in v0.2.0. Portal is used to render a layout outside of its original containing DOM tree, moving it somewhere else. <script> import {Box, Portal} from \"@kahi-ui/framework\"; let container = null; </script> <Box bind:element={container} palette=\"accent\" padding=\"small\" > I am the new container element! </Box> <Portal target={container}> <Box padding=\"small\">And I was moved to here!</Box> </Portal> Imports <script> import {Portal} from \"@kahi-ui/framework\"; </script> Compatibility Portal wraps your slotted content in a display: contents containing element, so keep that in mind in your CSS selectors. It also only remounts its self to the target on clientside Browsers with Javascript enabled. So you need to plan a SSR-compatible fallback if using in a SSR scenario. Loading NOTE : Introduced feature in v0.3.5. USAGE : Use your Browser's devtools to observe this feature. You can customize the slot loading behavior of Portal Components to not render their children, via the loading property. <script> import {Box, Portal} from \"@kahi-ui/framework\"; let container = null; </script> <Box bind:element={container} palette=\"accent\" padding=\"small\" > I am the new container element! </Box> <Portal target={container} loading=\"lazy\"> <Box padding=\"small\">And I was moved to here!</Box> </Portal> "},{"identifier":"/docs/utilities/serverrender","title":"ServerRender","text":"ServerRender NOTE : Introduced feature in v0.4.1. NOTE : This feature is renderless, meaning it does not render anything extra to the DOM. ServerRender disables rendering of child content that doesn't work on the Browser, or doesn't make sense there. e.g. reading a file from local disk USAGE : REPL renders in your Browser, so this feature will never render the content. <script> import {ServerRender} from \"@kahi-ui/framework\"; </script> <ServerRender> This only renders in a SSR environment, e.g. SvelteKit </ServerRender> Imports <script> import {ServerRender} from \"@kahi-ui/framework\"; </script> "},{"identifier":"/docs/utilities/transition","title":"Transition","text":"Transition NOTE : Introduced feature in v0.4.0. Transition is used to apply transitional animations on a containing element that will also include its children. Typically used for situations like changing between pages. <script> import { Box, Button, Transition, } from \"@kahi-ui/framework\"; let variation = undefined; </script> <Button on:click={() => (variation = variation === \"exit\" ? \"enter\" : \"exit\")} > Toggle Variation </Button> <Transition animation=\"clip\" {variation}> <Box palette=\"inverse\" padding=\"medium\"> hello world! </Box> </Transition> Imports <script> import {Transition} from \"@kahi-ui/framework\"; </script> Explicit NOTE : Introduced feature in v0.5.0. WARNING : This feature is only available in Javascript-enabled clients. You can alter Transition to use its CSS Transitions implementation instead of the CSS Animations implementation for animations. Which skips the first-paint iteration of the animation via the behavior property. <script> import { Box, Button, Transition, } from \"@kahi-ui/framework\"; let variation = \"exit\"; </script> <Button on:click={() => (variation = variation === \"exit\" ? \"enter\" : \"exit\")} > Toggle Variation </Button> <Transition animation=\"clip\" behavior=\"explicit\" {variation} > <Box palette=\"inverse\" padding=\"medium\"> hello world! </Box> </Transition> Delay Based on the animaton duration properties in the currently loaded theme. You can use a multiplier percentage decimal to delay it via the delay property. <script> import { Box, Button, Transition, } from \"@kahi-ui/framework\"; let variation = undefined; </script> <Button on:click={() => (variation = variation === \"exit\" ? \"enter\" : \"exit\")} > Toggle Variation </Button> <Transition animation=\"clip\" delay={1.25} {variation}> <Box palette=\"inverse\" padding=\"medium\"> hello world! </Box> </Transition> Duration NOTE : Introduced feature in v0.4.2. Based on the animaton duration properties in the currently loaded theme. You can use a multiplier percentage decimal to increase / shorten the animation duration via the duration property. <script> import { Box, Button, Transition, } from \"@kahi-ui/framework\"; let variation = undefined; </script> <Button on:click={() => (variation = variation === \"exit\" ? \"enter\" : \"exit\")} > Toggle Variation </Button> <Transition animation=\"clip\" duration={0.25} {variation} > <Box palette=\"inverse\" padding=\"medium\"> hello world! (x0.25) </Box> </Transition> <Transition animation=\"clip\" {variation}> <Box palette=\"inverse\" padding=\"medium\"> hello world! (x1) </Box> </Transition> <Transition animation=\"clip\" duration={1.75} {variation} > <Box palette=\"inverse\" padding=\"medium\"> hello world! (x1.75) </Box> </Transition> <Transition animation=\"clip\" duration={2.5} {variation} > <Box palette=\"inverse\" padding=\"medium\"> hello world! (x2.5) </Box> </Transition> <Transition animation=\"clip\" duration={3.25} {variation} > <Box palette=\"inverse\" padding=\"medium\"> hello world! (x3.25) </Box> </Transition> Direction You can control which direction the Transition animation will \"expand\", \"move\", or whatever your selected animations performs. Via the direction property. <script> import { Box, Button, Transition, } from \"@kahi-ui/framework\"; let variation = undefined; </script> <Button on:click={() => (variation = variation === \"exit\" ? \"enter\" : \"exit\")} > Toggle Variation </Button> <Transition animation=\"clip\" direction=\"right\" {variation} > <Box palette=\"inverse\" padding=\"medium\"> hello world! </Box> </Transition> Elements NOTE : Introduced feature in v0.6.0. You can change the HTML tag rendered to DOM via the is property. <script> import { Box, Button, Stack, Transition, } from \"@kahi-ui/framework\"; let variation = undefined; </script> <Button on:click={() => (variation = variation === \"exit\" ? \"enter\" : \"exit\")} > Toggle Variation </Button> <Stack.Container spacing=\"medium\" orientation=\"horizontal\" variation=\"wrap\" > <div> <Text is=\"strong\">DIV / BLOCK</Text> <Transition is=\"div\" animation=\"clip\" {variation} > <Box palette=\"inverse\" padding=\"medium\"> hello world! </Box> </Transition> </div> <div> <Text is=\"strong\">SPAN / INLINE</Text> <Transition is=\"span\" animation=\"clip\" {variation} > <Box palette=\"inverse\" padding=\"medium\"> hello world! </Box> </Transition> </div> </Stack.Container> Fade The simplest of all the animations, you can fade content in and out via the animation property. <script> import { Box, Button, Transition, } from \"@kahi-ui/framework\"; let variation = undefined; </script> <Button on:click={() => (variation = variation === \"exit\" ? \"enter\" : \"exit\")} > Toggle Variation </Button> <Transition animation=\"fade\" {variation}> <Box palette=\"inverse\" padding=\"medium\">Fade</Box> </Transition> By supplying a variation off the bat, you can also have the animation played as soon as the DOM is loaded. <script> import { Box, Button, Grid, Transition, } from \"@kahi-ui/framework\"; let dom = false; </script> <Button on:click={() => (dom = !dom)}> Toggle DOM </Button> <Grid.Container points=\"2\" spacing=\"medium\"> {#if dom} <Transition animation=\"fade\" variation=\"enter\"> <Box palette=\"inverse\" padding=\"medium\"> hello world! </Box> </Transition> <Transition animation=\"fade\" variation=\"enter\"> <Box palette=\"inverse\" padding=\"medium\"> hello world! </Box> </Transition> <Transition animation=\"fade\" delay={0.5} variation=\"enter\" > <Box palette=\"inverse\" padding=\"medium\"> hello world! </Box> </Transition> <Transition animation=\"fade\" delay={0.5} variation=\"enter\" > <Box palette=\"inverse\" padding=\"medium\"> hello world! </Box> </Transition> <Transition animation=\"fade\" delay={1.0} variation=\"enter\" > <Box palette=\"inverse\" padding=\"medium\"> hello world! </Box> </Transition> <Transition animation=\"fade\" delay={1.0} variation=\"enter\" > <Box palette=\"inverse\" padding=\"medium\"> hello world! </Box> </Transition> <Transition animation=\"fade\" delay={1.5} variation=\"enter\" > <Box palette=\"inverse\" padding=\"medium\"> hello world! </Box> </Transition> <Transition animation=\"fade\" delay={1.5} variation=\"enter\" > <Box palette=\"inverse\" padding=\"medium\"> hello world! </Box> </Transition> {/if} </Grid.Container> Clip You can have content \"clip\" in and out via the animation property. <script> import { Box, Button, Grid, Transition, } from \"@kahi-ui/framework\"; let variation = undefined; </script> <Button on:click={() => (variation = variation === \"exit\" ? \"enter\" : \"exit\")} > Toggle Variation </Button> <Grid.Container points={[\"2\", \"mobile:1\"]} spacing=\"medium\" > <Transition animation=\"clip\" direction=\"bottom\" {variation} > <Box palette=\"inverse\" padding=\"medium\"> Clip BOTTOM / DEFAULT </Box> </Transition> <Transition animation=\"clip\" direction=\"left\" {variation} > <Box palette=\"inverse\" padding=\"medium\"> Clip LEFT </Box> </Transition> <Transition animation=\"clip\" direction=\"right\" {variation} > <Box palette=\"inverse\" padding=\"medium\"> Clip RIGHT </Box> </Transition> <Transition animation=\"clip\" direction=\"top\" {variation} > <Box palette=\"inverse\" padding=\"medium\"> Clip TOP </Box> </Transition> </Grid.Container> By supplying a variation off the bat, you can also have the animation played as soon as the DOM is loaded. <script> import { Box, Button, Grid, Transition, } from \"@kahi-ui/framework\"; let dom = false; </script> <Button on:click={() => (dom = !dom)}> Toggle DOM </Button> <Grid.Container points=\"2\" spacing=\"medium\"> {#if dom} <Transition animation=\"clip\" direction=\"bottom\" variation=\"enter\" > <Box palette=\"inverse\" padding=\"medium\"> hello world! </Box> </Transition> <Transition animation=\"clip\" direction=\"bottom\" variation=\"enter\" > <Box palette=\"inverse\" padding=\"medium\"> hello world! </Box> </Transition> <Transition animation=\"clip\" delay={0.5} direction=\"bottom\" variation=\"enter\" > <Box palette=\"inverse\" padding=\"medium\"> hello world! </Box> </Transition> <Transition animation=\"clip\" delay={0.5} direction=\"bottom\" variation=\"enter\" > <Box palette=\"inverse\" padding=\"medium\"> hello world! </Box> </Transition> <Transition animation=\"clip\" delay={1.0} direction=\"bottom\" variation=\"enter\" > <Box palette=\"inverse\" padding=\"medium\"> hello world! </Box> </Transition> <Transition animation=\"clip\" delay={1.0} direction=\"bottom\" variation=\"enter\" > <Box palette=\"inverse\" padding=\"medium\"> hello world! </Box> </Transition> <Transition animation=\"clip\" delay={1.5} direction=\"bottom\" variation=\"enter\" > <Box palette=\"inverse\" padding=\"medium\"> hello world! </Box> </Transition> <Transition animation=\"clip\" delay={1.5} direction=\"bottom\" variation=\"enter\" > <Box palette=\"inverse\" padding=\"medium\"> hello world! </Box> </Transition> {/if} </Grid.Container> Scale You can have content \"scale\" in and out via the animation property. <script> import { Box, Button, Grid, Transition, } from \"@kahi-ui/framework\"; let variation = undefined; </script> <Button on:click={() => (variation = variation === \"exit\" ? \"enter\" : \"exit\")} > Toggle Variation </Button> <Grid.Container points={[\"2\", \"mobile:1\"]} spacing=\"medium\" > <Transition animation=\"scale\" {variation}> <Box palette=\"inverse\" padding=\"medium\"> Scale </Box> </Transition> </Grid.Container> By supplying a variation off the bat, you can also have the animation played as soon as the DOM is loaded. <script> import { Box, Button, Grid, Transition, } from \"@kahi-ui/framework\"; let dom = false; </script> <Button on:click={() => (dom = !dom)}> Toggle DOM </Button> <Grid.Container points=\"2\" spacing=\"medium\"> {#if dom} <Transition animation=\"scale\" variation=\"enter\" > <Box palette=\"inverse\" padding=\"medium\"> hello world! </Box> </Transition> <Transition animation=\"scale\" variation=\"enter\" > <Box palette=\"inverse\" padding=\"medium\"> hello world! </Box> </Transition> <Transition animation=\"scale\" delay={0.5} variation=\"enter\" > <Box palette=\"inverse\" padding=\"medium\"> hello world! </Box> </Transition> <Transition animation=\"scale\" delay={0.5} variation=\"enter\" > <Box palette=\"inverse\" padding=\"medium\"> hello world! </Box> </Transition> <Transition animation=\"scale\" delay={1.0} variation=\"enter\" > <Box palette=\"inverse\" padding=\"medium\"> hello world! </Box> </Transition> <Transition animation=\"scale\" delay={1.0} variation=\"enter\" > <Box palette=\"inverse\" padding=\"medium\"> hello world! </Box> </Transition> <Transition animation=\"scale\" delay={1.5} variation=\"enter\" > <Box palette=\"inverse\" padding=\"medium\"> hello world! </Box> </Transition> <Transition animation=\"scale\" delay={1.5} variation=\"enter\" > <Box palette=\"inverse\" padding=\"medium\"> hello world! </Box> </Transition> {/if} </Grid.Container> Slide You can have content \"slide\" in and out via the animation property. <script> import { Box, Button, Grid, Transition, } from \"@kahi-ui/framework\"; let variation = undefined; </script> <Button on:click={() => (variation = variation === \"exit\" ? \"enter\" : \"exit\")} > Toggle Variation </Button> <Grid.Container points={[\"2\", \"mobile:1\"]} spacing=\"medium\" > <Transition animation=\"slide\" direction=\"bottom\" {variation} > <Box palette=\"inverse\" padding=\"medium\"> Slide BOTTOM / DEFAULT </Box> </Transition> <Transition animation=\"slide\" direction=\"left\" {variation} > <Box palette=\"inverse\" padding=\"medium\"> Slide LEFT </Box> </Transition> <Transition animation=\"slide\" direction=\"right\" {variation} > <Box palette=\"inverse\" padding=\"medium\"> Slide RIGHT </Box> </Transition> <Transition animation=\"slide\" direction=\"top\" {variation} > <Box palette=\"inverse\" padding=\"medium\"> Slide TOP </Box> </Transition> </Grid.Container> By supplying a variation off the bat, you can also have the animation played as soon as the DOM is loaded. <script> import { Box, Button, Grid, Transition, } from \"@kahi-ui/framework\"; let dom = false; </script> <Button on:click={() => (dom = !dom)}> Toggle DOM </Button> <Grid.Container points=\"2\" spacing=\"medium\"> {#if dom} <Transition animation=\"slide\" direction=\"bottom\" variation=\"enter\" > <Box palette=\"inverse\" padding=\"medium\"> hello world! </Box> </Transition> <Transition animation=\"slide\" direction=\"bottom\" variation=\"enter\" > <Box palette=\"inverse\" padding=\"medium\"> hello world! </Box> </Transition> <Transition animation=\"slide\" delay={0.5} direction=\"bottom\" variation=\"enter\" > <Box palette=\"inverse\" padding=\"medium\"> hello world! </Box> </Transition> <Transition animation=\"slide\" delay={0.5} direction=\"bottom\" variation=\"enter\" > <Box palette=\"inverse\" padding=\"medium\"> hello world! </Box> </Transition> <Transition animation=\"slide\" delay={1.0} direction=\"bottom\" variation=\"enter\" > <Box palette=\"inverse\" padding=\"medium\"> hello world! </Box> </Transition> <Transition animation=\"slide\" delay={1.0} direction=\"bottom\" variation=\"enter\" > <Box palette=\"inverse\" padding=\"medium\"> hello world! </Box> </Transition> <Transition animation=\"slide\" delay={1.5} direction=\"bottom\" variation=\"enter\" > <Box palette=\"inverse\" padding=\"medium\"> hello world! </Box> </Transition> <Transition animation=\"slide\" delay={1.5} direction=\"bottom\" variation=\"enter\" > <Box palette=\"inverse\" padding=\"medium\"> hello world! </Box> </Transition> {/if} </Grid.Container> "},{"identifier":"/docs/utilities/viewportrender","title":"ViewportRender","text":"ViewportRender NOTE : Introduced feature in v0.5.1. USAGE : REPL does not support viewport values, resize your Browser to observe this feature. ViewportRender disables rendering of child content while the provided Viewport(s) are not active. <script> import { Box, ViewportRender, } from \"@kahi-ui/framework\"; </script> <ViewportRender mobile tablet> <Box palette=\"affirmative\" padding=\"small\"> I am only visible on MOBILE+TABLET Viewports! </Box> </ViewportRender> <ViewportRender desktop widescreen> <Box palette=\"negative\" padding=\"small\"> I am only visible on DESKTOP+WIDESCREEN Viewports! </Box> </ViewportRender> Imports <script> import {ViewportRender} from \"@kahi-ui/framework\"; </script> Compatibility The Component only runs on clientside Browsers with Javascript enabled. So you need to plan a SSR-compatible fallback if using in a SSR scenario. If the child content getting mounted is not of concern, then it's recommended to use SSR-compatible hidden global property. Fallthrough USAGE : REPL renders in your Browser, so this feature will always render conditionally anyway. USAGE : REPL does not support viewport values, resize your Browser to observe this feature. By default, ViewportRender will never render when running in SSR environments. You can change it to always render in those environments via the fallthrough property. <script> import { Box, ViewportRender, } from \"@kahi-ui/framework\"; </script> <ViewportRender mobile fallthrough> <Box palette=\"affirmative\" padding=\"small\"> I am only visible on MOBILE Viewports! </Box> </ViewportRender> "},{"identifier":"/docs/widgets/dataselect","title":"DataSelect","text":"DataSelect NOTE : Introduced feature in v0.6.2. DataSelect uses various built-in Components to render a list of selectable options into a hovering box that is highly customizable, while supporting working in normal HTML forms. <script> import {DataSelect} from \"@kahi-ui/framework\"; const ITEMS = [ { text: \"Alabama\", id: \"alabama\", palette: \"accent\", }, { text: \"Alaska\", id: \"alaska\", palette: \"accent\", }, { text: \"Arizona\", id: \"arizona\", palette: \"accent\", }, { text: \"Arkansas\", id: \"arkansas\", palette: \"accent\", }, { text: \"California\", id: \"california\", palette: \"accent\", }, { text: \"Colorado\", id: \"colorado\", palette: \"accent\", }, { text: \"Connecticut\", id: \"connecticut\", palette: \"accent\", }, { text: \"Delaware\", id: \"delaware\", palette: \"accent\", }, { text: \"Florida\", id: \"florida\", palette: \"accent\", }, { text: \"Georgia\", id: \"georgia\", palette: \"accent\", }, { text: \"Hawaii\", id: \"hawaii\", palette: \"accent\", }, { text: \"Idaho\", id: \"idaho\", palette: \"accent\", }, { text: \"Illinois\", id: \"illinois\", palette: \"accent\", }, { text: \"Indiana\", id: \"Indiana\", palette: \"accent\", }, {text: \"Iowa\", id: \"iowa\", palette: \"accent\"}, { text: \"Kansas\", id: \"kansas\", palette: \"accent\", }, { text: \"Kentucky\", id: \"kentucky\", palette: \"accent\", }, { text: \"Louisiana\", id: \"louisiana\", palette: \"accent\", }, { text: \"Maine\", id: \"maine\", palette: \"accent\", }, { text: \"Maryland\", id: \"maryland\", palette: \"accent\", }, { text: \"Massachusetts\", id: \"massachusetts\", palette: \"accent\", }, { text: \"Michigan\", id: \"michigan\", palette: \"accent\", }, { text: \"Minnesota\", id: \"minnesota\", palette: \"accent\", }, { text: \"Mississippi\", id: \"mississippi\", palette: \"accent\", }, { text: \"Missouri\", id: \"missouri\", palette: \"accent\", }, { text: \"Montana\", id: \"montana\", palette: \"accent\", }, { text: \"Nebraska\", id: \"nebraska\", palette: \"accent\", }, { text: \"Nevada\", id: \"nevada\", palette: \"accent\", }, { text: \"New Hampshire\", id: \"new-hampshire\", palette: \"accent\", }, { text: \"New Jersey\", id: \"new-jersey\", palette: \"accent\", }, { text: \"New Mexico\", id: \"new-mexico\", palette: \"accent\", }, { text: \"New York\", id: \"new-york\", palette: \"accent\", }, { text: \"North Carolina\", id: \"north-carolina\", palette: \"accent\", }, { text: \"North Dakota\", id: \"north-dakota\", palette: \"accent\", }, {text: \"Ohio\", id: \"ohio\", palette: \"accent\"}, { text: \"Oklahoma\", id: \"oklahoma\", palette: \"accent\", }, { text: \"Oregon\", id: \"oregon\", palette: \"accent\", }, { text: \"Pennsylvania\", id: \"pennsylvania\", palette: \"accent\", }, { text: \"Rhode Island\", id: \"rhode-island\", palette: \"accent\", }, { text: \"South Carolina\", id: \"south-carolina\", palette: \"accent\", }, { text: \"South Dakota\", id: \"south-dakota\", palette: \"accent\", }, { text: \"Tennessee\", id: \"tennessee\", palette: \"accent\", }, { text: \"Texas\", id: \"texas\", palette: \"accent\", }, {text: \"Utah\", id: \"utah\", palette: \"accent\"}, { text: \"Vermont\", id: \"vermont\", palette: \"accent\", }, { text: \"Virginia\", id: \"virginia\", palette: \"accent\", }, { text: \"Washington\", id: \"washington\", palette: \"accent\", }, { text: \"West Virginia\", id: \"west-virginia\", palette: \"accent\", }, { text: \"Wisconsin\", id: \"wisconsin\", palette: \"accent\", }, { text: \"Wyoming\", id: \"wyoming\", palette: \"accent\", }, ]; </script> <DataSelect items={ITEMS} logic_name=\"dataselect-preview\" placeholder=\"Select a US State...\" palette=\"accent\" /> Imports <script> import {DataSelect} from \"@kahi-ui/framework\"; </script> Multiple You can allow the user to select multiple items via the multiple property. <script> import {DataSelect} from \"@kahi-ui/framework\"; const ITEMS = [ { text: \"Alabama\", id: \"alabama\", palette: \"accent\", }, { text: \"Alaska\", id: \"alaska\", palette: \"accent\", }, { text: \"Arizona\", id: \"arizona\", palette: \"accent\", }, { text: \"Arkansas\", id: \"arkansas\", palette: \"accent\", }, { text: \"California\", id: \"california\", palette: \"accent\", }, { text: \"Colorado\", id: \"colorado\", palette: \"accent\", }, { text: \"Connecticut\", id: \"connecticut\", palette: \"accent\", }, { text: \"Delaware\", id: \"delaware\", palette: \"accent\", }, { text: \"Florida\", id: \"florida\", palette: \"accent\", }, { text: \"Georgia\", id: \"georgia\", palette: \"accent\", }, { text: \"Hawaii\", id: \"hawaii\", palette: \"accent\", }, { text: \"Idaho\", id: \"idaho\", palette: \"accent\", }, { text: \"Illinois\", id: \"illinois\", palette: \"accent\", }, { text: \"Indiana\", id: \"Indiana\", palette: \"accent\", }, {text: \"Iowa\", id: \"iowa\", palette: \"accent\"}, { text: \"Kansas\", id: \"kansas\", palette: \"accent\", }, { text: \"Kentucky\", id: \"kentucky\", palette: \"accent\", }, { text: \"Louisiana\", id: \"louisiana\", palette: \"accent\", }, { text: \"Maine\", id: \"maine\", palette: \"accent\", }, { text: \"Maryland\", id: \"maryland\", palette: \"accent\", }, { text: \"Massachusetts\", id: \"massachusetts\", palette: \"accent\", }, { text: \"Michigan\", id: \"michigan\", palette: \"accent\", }, { text: \"Minnesota\", id: \"minnesota\", palette: \"accent\", }, { text: \"Mississippi\", id: \"mississippi\", palette: \"accent\", }, { text: \"Missouri\", id: \"missouri\", palette: \"accent\", }, { text: \"Montana\", id: \"montana\", palette: \"accent\", }, { text: \"Nebraska\", id: \"nebraska\", palette: \"accent\", }, { text: \"Nevada\", id: \"nevada\", palette: \"accent\", }, { text: \"New Hampshire\", id: \"new-hampshire\", palette: \"accent\", }, { text: \"New Jersey\", id: \"new-jersey\", palette: \"accent\", }, { text: \"New Mexico\", id: \"new-mexico\", palette: \"accent\", }, { text: \"New York\", id: \"new-york\", palette: \"accent\", }, { text: \"North Carolina\", id: \"north-carolina\", palette: \"accent\", }, { text: \"North Dakota\", id: \"north-dakota\", palette: \"accent\", }, {text: \"Ohio\", id: \"ohio\", palette: \"accent\"}, { text: \"Oklahoma\", id: \"oklahoma\", palette: \"accent\", }, { text: \"Oregon\", id: \"oregon\", palette: \"accent\", }, { text: \"Pennsylvania\", id: \"pennsylvania\", palette: \"accent\", }, { text: \"Rhode Island\", id: \"rhode-island\", palette: \"accent\", }, { text: \"South Carolina\", id: \"south-carolina\", palette: \"accent\", }, { text: \"South Dakota\", id: \"south-dakota\", palette: \"accent\", }, { text: \"Tennessee\", id: \"tennessee\", palette: \"accent\", }, { text: \"Texas\", id: \"texas\", palette: \"accent\", }, {text: \"Utah\", id: \"utah\", palette: \"accent\"}, { text: \"Vermont\", id: \"vermont\", palette: \"accent\", }, { text: \"Virginia\", id: \"virginia\", palette: \"accent\", }, { text: \"Washington\", id: \"washington\", palette: \"accent\", }, { text: \"West Virginia\", id: \"west-virginia\", palette: \"accent\", }, { text: \"Wisconsin\", id: \"wisconsin\", palette: \"accent\", }, { text: \"Wyoming\", id: \"wyoming\", palette: \"accent\", }, ]; </script> <DataSelect items={ITEMS} logic_name=\"dataselect-multiple\" placeholder=\"Select multiple US States...\" palette=\"accent\" multiple /> Logic State You can control which items are already selected via the logic_state property. <script> import {DataSelect} from \"@kahi-ui/framework\"; const ITEMS = [ {text: \"Alabama\", id: \"alabama\"}, {text: \"Alaska\", id: \"alaska\"}, {text: \"Arizona\", id: \"arizona\"}, {text: \"Arkansas\", id: \"arkansas\"}, {text: \"California\", id: \"california\"}, {text: \"Colorado\", id: \"colorado\"}, {text: \"Connecticut\", id: \"connecticut\"}, {text: \"Delaware\", id: \"delaware\"}, {text: \"Florida\", id: \"florida\"}, {text: \"Georgia\", id: \"georgia\"}, {text: \"Hawaii\", id: \"hawaii\"}, {text: \"Idaho\", id: \"idaho\"}, {text: \"Illinois\", id: \"illinois\"}, {text: \"Indiana\", id: \"Indiana\"}, {text: \"Iowa\", id: \"iowa\", palette: \"accent\"}, {text: \"Kansas\", id: \"kansas\"}, {text: \"Kentucky\", id: \"kentucky\"}, {text: \"Louisiana\", id: \"louisiana\"}, {text: \"Maine\", id: \"maine\"}, {text: \"Maryland\", id: \"maryland\"}, {text: \"Massachusetts\", id: \"massachusetts\"}, {text: \"Michigan\", id: \"michigan\"}, {text: \"Minnesota\", id: \"minnesota\"}, {text: \"Mississippi\", id: \"mississippi\"}, {text: \"Missouri\", id: \"missouri\"}, {text: \"Montana\", id: \"montana\"}, {text: \"Nebraska\", id: \"nebraska\"}, {text: \"Nevada\", id: \"nevada\"}, {text: \"New Hampshire\", id: \"new-hampshire\"}, {text: \"New Jersey\", id: \"new-jersey\"}, {text: \"New Mexico\", id: \"new-mexico\"}, {text: \"New York\", id: \"new-york\"}, {text: \"North Carolina\", id: \"north-carolina\"}, {text: \"North Dakota\", id: \"north-dakota\"}, {text: \"Ohio\", id: \"ohio\"}, {text: \"Oklahoma\", id: \"oklahoma\"}, {text: \"Oregon\", id: \"oregon\"}, {text: \"Pennsylvania\", id: \"pennsylvania\"}, {text: \"Rhode Island\", id: \"rhode-island\"}, {text: \"South Carolina\", id: \"south-carolina\"}, {text: \"South Dakota\", id: \"south-dakota\"}, {text: \"Tennessee\", id: \"tennessee\"}, {text: \"Texas\", id: \"texas\"}, {text: \"Utah\", id: \"utah\"}, {text: \"Vermont\", id: \"vermont\"}, {text: \"Virginia\", id: \"virginia\"}, {text: \"Washington\", id: \"washington\"}, {text: \"West Virginia\", id: \"west-virginia\"}, {text: \"Wisconsin\", id: \"wisconsin\"}, {text: \"Wyoming\", id: \"wyoming\"}, ]; </script> <DataSelect items={ITEMS} logic_name=\"dataselect-logic-state\" logic_state={[\"oregon\", \"delaware\"]} placeholder=\"Select multiple US States...\" multiple /> Searching WARNING : This feature is only available in Javascript-enabled clients. DataTable includes a bottom left search box which allows users to filter rows based on the input. You can customize the default via the searching property. <script> import {DataSelect} from \"@kahi-ui/framework\"; const ITEMS = [ {text: \"Alabama\", id: \"alabama\"}, {text: \"Alaska\", id: \"alaska\"}, {text: \"Arizona\", id: \"arizona\"}, {text: \"Arkansas\", id: \"arkansas\"}, {text: \"California\", id: \"california\"}, {text: \"Colorado\", id: \"colorado\"}, {text: \"Connecticut\", id: \"connecticut\"}, {text: \"Delaware\", id: \"delaware\"}, {text: \"Florida\", id: \"florida\"}, {text: \"Georgia\", id: \"georgia\"}, {text: \"Hawaii\", id: \"hawaii\"}, {text: \"Idaho\", id: \"idaho\"}, {text: \"Illinois\", id: \"illinois\"}, {text: \"Indiana\", id: \"Indiana\"}, {text: \"Iowa\", id: \"iowa\", palette: \"accent\"}, {text: \"Kansas\", id: \"kansas\"}, {text: \"Kentucky\", id: \"kentucky\"}, {text: \"Louisiana\", id: \"louisiana\"}, {text: \"Maine\", id: \"maine\"}, {text: \"Maryland\", id: \"maryland\"}, {text: \"Massachusetts\", id: \"massachusetts\"}, {text: \"Michigan\", id: \"michigan\"}, {text: \"Minnesota\", id: \"minnesota\"}, {text: \"Mississippi\", id: \"mississippi\"}, {text: \"Missouri\", id: \"missouri\"}, {text: \"Montana\", id: \"montana\"}, {text: \"Nebraska\", id: \"nebraska\"}, {text: \"Nevada\", id: \"nevada\"}, {text: \"New Hampshire\", id: \"new-hampshire\"}, {text: \"New Jersey\", id: \"new-jersey\"}, {text: \"New Mexico\", id: \"new-mexico\"}, {text: \"New York\", id: \"new-york\"}, {text: \"North Carolina\", id: \"north-carolina\"}, {text: \"North Dakota\", id: \"north-dakota\"}, {text: \"Ohio\", id: \"ohio\"}, {text: \"Oklahoma\", id: \"oklahoma\"}, {text: \"Oregon\", id: \"oregon\"}, {text: \"Pennsylvania\", id: \"pennsylvania\"}, {text: \"Rhode Island\", id: \"rhode-island\"}, {text: \"South Carolina\", id: \"south-carolina\"}, {text: \"South Dakota\", id: \"south-dakota\"}, {text: \"Tennessee\", id: \"tennessee\"}, {text: \"Texas\", id: \"texas\"}, {text: \"Utah\", id: \"utah\"}, {text: \"Vermont\", id: \"vermont\"}, {text: \"Virginia\", id: \"virginia\"}, {text: \"Washington\", id: \"washington\"}, {text: \"West Virginia\", id: \"west-virginia\"}, {text: \"Wisconsin\", id: \"wisconsin\"}, {text: \"Wyoming\", id: \"wyoming\"}, ]; </script> <DataSelect items={ITEMS} logic_name=\"dataselect-searching\" placeholder=\"Select a US State...\" searching=\"ma\" /> Maximum You can control the maximum amount of items selectable by the user via the max property. <script> import {DataSelect} from \"@kahi-ui/framework\"; const ITEMS = [ {text: \"Alabama\", id: \"alabama\"}, {text: \"Alaska\", id: \"alaska\"}, {text: \"Arizona\", id: \"arizona\"}, {text: \"Arkansas\", id: \"arkansas\"}, {text: \"California\", id: \"california\"}, {text: \"Colorado\", id: \"colorado\"}, {text: \"Connecticut\", id: \"connecticut\"}, {text: \"Delaware\", id: \"delaware\"}, {text: \"Florida\", id: \"florida\"}, {text: \"Georgia\", id: \"georgia\"}, {text: \"Hawaii\", id: \"hawaii\"}, {text: \"Idaho\", id: \"idaho\"}, {text: \"Illinois\", id: \"illinois\"}, {text: \"Indiana\", id: \"Indiana\"}, {text: \"Iowa\", id: \"iowa\", palette: \"accent\"}, {text: \"Kansas\", id: \"kansas\"}, {text: \"Kentucky\", id: \"kentucky\"}, {text: \"Louisiana\", id: \"louisiana\"}, {text: \"Maine\", id: \"maine\"}, {text: \"Maryland\", id: \"maryland\"}, {text: \"Massachusetts\", id: \"massachusetts\"}, {text: \"Michigan\", id: \"michigan\"}, {text: \"Minnesota\", id: \"minnesota\"}, {text: \"Mississippi\", id: \"mississippi\"}, {text: \"Missouri\", id: \"missouri\"}, {text: \"Montana\", id: \"montana\"}, {text: \"Nebraska\", id: \"nebraska\"}, {text: \"Nevada\", id: \"nevada\"}, {text: \"New Hampshire\", id: \"new-hampshire\"}, {text: \"New Jersey\", id: \"new-jersey\"}, {text: \"New Mexico\", id: \"new-mexico\"}, {text: \"New York\", id: \"new-york\"}, {text: \"North Carolina\", id: \"north-carolina\"}, {text: \"North Dakota\", id: \"north-dakota\"}, {text: \"Ohio\", id: \"ohio\"}, {text: \"Oklahoma\", id: \"oklahoma\"}, {text: \"Oregon\", id: \"oregon\"}, {text: \"Pennsylvania\", id: \"pennsylvania\"}, {text: \"Rhode Island\", id: \"rhode-island\"}, {text: \"South Carolina\", id: \"south-carolina\"}, {text: \"South Dakota\", id: \"south-dakota\"}, {text: \"Tennessee\", id: \"tennessee\"}, {text: \"Texas\", id: \"texas\"}, {text: \"Utah\", id: \"utah\"}, {text: \"Vermont\", id: \"vermont\"}, {text: \"Virginia\", id: \"virginia\"}, {text: \"Washington\", id: \"washington\"}, {text: \"West Virginia\", id: \"west-virginia\"}, {text: \"Wisconsin\", id: \"wisconsin\"}, {text: \"Wyoming\", id: \"wyoming\"}, ]; </script> <DataSelect items={ITEMS} logic_name=\"dataselect-max-one\" placeholder=\"Select one (1) US State...\" max={1} multiple /> <DataSelect items={ITEMS} logic_name=\"dataselect-max-five\" placeholder=\"Select five (5) US States...\" max={5} multiple /> Palette You can change the color palette of the inner TextInput via the palette property. <script> import { DataSelect, Stack, Text, } from \"@kahi-ui/framework\"; const ITEMS = [ {text: \"Alabama\", id: \"alabama\"}, {text: \"Alaska\", id: \"alaska\"}, {text: \"Arizona\", id: \"arizona\"}, {text: \"Arkansas\", id: \"arkansas\"}, {text: \"California\", id: \"california\"}, {text: \"Colorado\", id: \"colorado\"}, {text: \"Connecticut\", id: \"connecticut\"}, {text: \"Delaware\", id: \"delaware\"}, {text: \"Florida\", id: \"florida\"}, {text: \"Georgia\", id: \"georgia\"}, {text: \"Hawaii\", id: \"hawaii\"}, {text: \"Idaho\", id: \"idaho\"}, {text: \"Illinois\", id: \"illinois\"}, {text: \"Indiana\", id: \"Indiana\"}, {text: \"Iowa\", id: \"iowa\", palette: \"accent\"}, {text: \"Kansas\", id: \"kansas\"}, {text: \"Kentucky\", id: \"kentucky\"}, {text: \"Louisiana\", id: \"louisiana\"}, {text: \"Maine\", id: \"maine\"}, {text: \"Maryland\", id: \"maryland\"}, {text: \"Massachusetts\", id: \"massachusetts\"}, {text: \"Michigan\", id: \"michigan\"}, {text: \"Minnesota\", id: \"minnesota\"}, {text: \"Mississippi\", id: \"mississippi\"}, {text: \"Missouri\", id: \"missouri\"}, {text: \"Montana\", id: \"montana\"}, {text: \"Nebraska\", id: \"nebraska\"}, {text: \"Nevada\", id: \"nevada\"}, {text: \"New Hampshire\", id: \"new-hampshire\"}, {text: \"New Jersey\", id: \"new-jersey\"}, {text: \"New Mexico\", id: \"new-mexico\"}, {text: \"New York\", id: \"new-york\"}, {text: \"North Carolina\", id: \"north-carolina\"}, {text: \"North Dakota\", id: \"north-dakota\"}, {text: \"Ohio\", id: \"ohio\"}, {text: \"Oklahoma\", id: \"oklahoma\"}, {text: \"Oregon\", id: \"oregon\"}, {text: \"Pennsylvania\", id: \"pennsylvania\"}, {text: \"Rhode Island\", id: \"rhode-island\"}, {text: \"South Carolina\", id: \"south-carolina\"}, {text: \"South Dakota\", id: \"south-dakota\"}, {text: \"Tennessee\", id: \"tennessee\"}, {text: \"Texas\", id: \"texas\"}, {text: \"Utah\", id: \"utah\"}, {text: \"Vermont\", id: \"vermont\"}, {text: \"Virginia\", id: \"virginia\"}, {text: \"Washington\", id: \"washington\"}, {text: \"West Virginia\", id: \"west-virginia\"}, {text: \"Wisconsin\", id: \"wisconsin\"}, {text: \"Wyoming\", id: \"wyoming\"}, ]; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div> <Text is=\"strong\">DEFAULT</Text> <br /> <DataSelect items={ITEMS} logic_name=\"dataselect-palette-default\" placeholder=\"Select a US State...\" /> </div> <div> <Text is=\"strong\">ACCENT</Text> <br /> <DataSelect items={ITEMS} logic_name=\"dataselect-palette-accent\" placeholder=\"Select a US State...\" palette=\"accent\" /> </div> <div> <Text is=\"strong\">NEUTRAL</Text> <br /> <DataSelect items={ITEMS} logic_name=\"dataselect-palette-neutral\" placeholder=\"Select a US State...\" palette=\"neutral\" /> </div> <div> <Text is=\"strong\">DARK</Text> <br /> <DataSelect items={ITEMS} logic_name=\"dataselect-palette-dark\" placeholder=\"Select a US State...\" palette=\"dark\" /> </div> <div> <Text is=\"strong\">LIGHT</Text> <br /> <DataSelect items={ITEMS} logic_name=\"dataselect-palette-light\" placeholder=\"Select a US State...\" palette=\"light\" /> </div> <div> <Text is=\"strong\">ALERT</Text> <br /> <DataSelect items={ITEMS} logic_name=\"dataselect-palette-alert\" placeholder=\"Select a US State...\" palette=\"alert\" /> </div> <div> <Text is=\"strong\">AFFIRMATIVE</Text> <br /> <DataSelect items={ITEMS} logic_name=\"dataselect-palette-affirmative\" placeholder=\"Select a US State...\" palette=\"affirmative\" /> </div> <div> <Text is=\"strong\">INFORMATIVE</Text> <br /> <DataSelect items={ITEMS} logic_name=\"dataselect-palette-informative\" placeholder=\"Select a US State...\" palette=\"informative\" /> </div> <div> <Text is=\"strong\">NEGATIVE</Text> <br /> <DataSelect items={ITEMS} logic_name=\"dataselect-palette-negative\" placeholder=\"Select a US State...\" palette=\"negative\" /> </div> </Stack.Container> Sizing You can change the sizing of the inner TextInput via the sizing property. <script> import { DataSelect, Stack, Text, } from \"@kahi-ui/framework\"; const ITEMS = [ {text: \"Alabama\", id: \"alabama\"}, {text: \"Alaska\", id: \"alaska\"}, {text: \"Arizona\", id: \"arizona\"}, {text: \"Arkansas\", id: \"arkansas\"}, {text: \"California\", id: \"california\"}, {text: \"Colorado\", id: \"colorado\"}, {text: \"Connecticut\", id: \"connecticut\"}, {text: \"Delaware\", id: \"delaware\"}, {text: \"Florida\", id: \"florida\"}, {text: \"Georgia\", id: \"georgia\"}, {text: \"Hawaii\", id: \"hawaii\"}, {text: \"Idaho\", id: \"idaho\"}, {text: \"Illinois\", id: \"illinois\"}, {text: \"Indiana\", id: \"Indiana\"}, {text: \"Iowa\", id: \"iowa\", palette: \"accent\"}, {text: \"Kansas\", id: \"kansas\"}, {text: \"Kentucky\", id: \"kentucky\"}, {text: \"Louisiana\", id: \"louisiana\"}, {text: \"Maine\", id: \"maine\"}, {text: \"Maryland\", id: \"maryland\"}, {text: \"Massachusetts\", id: \"massachusetts\"}, {text: \"Michigan\", id: \"michigan\"}, {text: \"Minnesota\", id: \"minnesota\"}, {text: \"Mississippi\", id: \"mississippi\"}, {text: \"Missouri\", id: \"missouri\"}, {text: \"Montana\", id: \"montana\"}, {text: \"Nebraska\", id: \"nebraska\"}, {text: \"Nevada\", id: \"nevada\"}, {text: \"New Hampshire\", id: \"new-hampshire\"}, {text: \"New Jersey\", id: \"new-jersey\"}, {text: \"New Mexico\", id: \"new-mexico\"}, {text: \"New York\", id: \"new-york\"}, {text: \"North Carolina\", id: \"north-carolina\"}, {text: \"North Dakota\", id: \"north-dakota\"}, {text: \"Ohio\", id: \"ohio\"}, {text: \"Oklahoma\", id: \"oklahoma\"}, {text: \"Oregon\", id: \"oregon\"}, {text: \"Pennsylvania\", id: \"pennsylvania\"}, {text: \"Rhode Island\", id: \"rhode-island\"}, {text: \"South Carolina\", id: \"south-carolina\"}, {text: \"South Dakota\", id: \"south-dakota\"}, {text: \"Tennessee\", id: \"tennessee\"}, {text: \"Texas\", id: \"texas\"}, {text: \"Utah\", id: \"utah\"}, {text: \"Vermont\", id: \"vermont\"}, {text: \"Virginia\", id: \"virginia\"}, {text: \"Washington\", id: \"washington\"}, {text: \"West Virginia\", id: \"west-virginia\"}, {text: \"Wisconsin\", id: \"wisconsin\"}, {text: \"Wyoming\", id: \"wyoming\"}, ]; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" variation=\"wrap\" > <div> <Text is=\"strong\">DEFAULT</Text> <br /> <DataSelect items={ITEMS} logic_name=\"dataselect-sizing-default\" placeholder=\"Select a US State...\" /> </div> <div> <Text is=\"strong\">NANO</Text> <br /> <DataSelect items={ITEMS} logic_name=\"dataselect-sizing-nano\" placeholder=\"Select a US State...\" sizing=\"nano\" /> </div> <div> <Text is=\"strong\">TINY</Text> <br /> <DataSelect items={ITEMS} logic_name=\"dataselect-sizing-tiny\" placeholder=\"Select a US State...\" sizing=\"tiny\" /> </div> <div> <Text is=\"strong\">SMALL</Text> <br /> <DataSelect items={ITEMS} logic_name=\"dataselect-sizing-small\" placeholder=\"Select a US State...\" sizing=\"small\" /> </div> <div> <Text is=\"strong\">MEDIUM</Text> <br /> <DataSelect items={ITEMS} logic_name=\"dataselect-sizing-medium\" placeholder=\"Select a US State...\" sizing=\"medium\" /> </div> <div> <Text is=\"strong\">LARGE</Text> <br /> <DataSelect items={ITEMS} logic_name=\"dataselect-sizing-large\" placeholder=\"Select a US State...\" sizing=\"large\" /> </div> <div> <Text is=\"strong\">HUGE</Text> <br /> <DataSelect items={ITEMS} logic_name=\"dataselect-sizing-huge\" placeholder=\"Select a US State...\" sizing=\"huge\" /> </div> <div> <Text is=\"strong\">MASSIVE</Text> <br /> <DataSelect items={ITEMS} logic_name=\"dataselect-sizing-massive\" placeholder=\"Select a US State...\" sizing=\"massive\" /> </div> </Stack.Container> Item Disabled You can disable individual inner Check / Radio Components via the items.T[].disabled property member. <script> import {DataSelect} from \"@kahi-ui/framework\"; const ITEMS = [ {text: \"Alabama\", id: \"alabama\"}, {text: \"Alaska\", id: \"alaska\"}, {text: \"Arizona\", id: \"arizona\"}, {text: \"Arkansas\", id: \"arkansas\"}, {text: \"California\", id: \"california\"}, {text: \"Colorado\", id: \"colorado\"}, {text: \"Connecticut\", id: \"connecticut\"}, {text: \"Delaware\", id: \"delaware\"}, {text: \"Florida\", id: \"florida\"}, {text: \"Georgia\", id: \"georgia\"}, {text: \"Hawaii\", id: \"hawaii\"}, {text: \"Idaho\", id: \"idaho\"}, {text: \"Illinois\", id: \"illinois\"}, {text: \"Indiana\", id: \"Indiana\"}, {text: \"Iowa\", id: \"iowa\", palette: \"accent\"}, {text: \"Kansas\", id: \"kansas\"}, {text: \"Kentucky\", id: \"kentucky\"}, {text: \"Louisiana\", id: \"louisiana\"}, {text: \"Maine\", id: \"maine\"}, {text: \"Maryland\", id: \"maryland\"}, {text: \"Massachusetts\", id: \"massachusetts\"}, {text: \"Michigan\", id: \"michigan\"}, {text: \"Minnesota\", id: \"minnesota\"}, {text: \"Mississippi\", id: \"mississippi\"}, {text: \"Missouri\", id: \"missouri\"}, {text: \"Montana\", id: \"montana\"}, {text: \"Nebraska\", id: \"nebraska\"}, {text: \"Nevada\", id: \"nevada\"}, {text: \"New Hampshire\", id: \"new-hampshire\"}, {text: \"New Jersey\", id: \"new-jersey\"}, {text: \"New Mexico\", id: \"new-mexico\"}, {text: \"New York\", id: \"new-york\"}, {text: \"North Carolina\", id: \"north-carolina\"}, {text: \"North Dakota\", id: \"north-dakota\"}, {text: \"Ohio\", id: \"ohio\"}, {text: \"Oklahoma\", id: \"oklahoma\"}, {text: \"Oregon\", id: \"oregon\"}, {text: \"Pennsylvania\", id: \"pennsylvania\"}, {text: \"Rhode Island\", id: \"rhode-island\"}, {text: \"South Carolina\", id: \"south-carolina\"}, {text: \"South Dakota\", id: \"south-dakota\"}, {text: \"Tennessee\", id: \"tennessee\"}, {text: \"Texas\", id: \"texas\"}, {text: \"Utah\", id: \"utah\"}, {text: \"Vermont\", id: \"vermont\"}, {text: \"Virginia\", id: \"virginia\"}, {text: \"Washington\", id: \"washington\"}, {text: \"West Virginia\", id: \"west-virginia\"}, {text: \"Wisconsin\", id: \"wisconsin\"}, {text: \"Wyoming\", id: \"wyoming\"}, ]; </script> <DataSelect items={ITEMS.map((item, index) => { return {...item, disabled: index % 5 === 0}; })} logic_name=\"dataselect-item-disabled\" placeholder=\"Select a US State...\" /> Item Palette You can change the color palette of individual inner Check / Radio Components via the items.T[].palette property member. <script> import {DataSelect} from \"@kahi-ui/framework\"; const ITEMS = [ {text: \"Alabama\", id: \"alabama\"}, {text: \"Alaska\", id: \"alaska\"}, {text: \"Arizona\", id: \"arizona\"}, {text: \"Arkansas\", id: \"arkansas\"}, {text: \"California\", id: \"california\"}, {text: \"Colorado\", id: \"colorado\"}, {text: \"Connecticut\", id: \"connecticut\"}, {text: \"Delaware\", id: \"delaware\"}, {text: \"Florida\", id: \"florida\"}, {text: \"Georgia\", id: \"georgia\"}, {text: \"Hawaii\", id: \"hawaii\"}, {text: \"Idaho\", id: \"idaho\"}, {text: \"Illinois\", id: \"illinois\"}, {text: \"Indiana\", id: \"Indiana\"}, {text: \"Iowa\", id: \"iowa\", palette: \"accent\"}, {text: \"Kansas\", id: \"kansas\"}, {text: \"Kentucky\", id: \"kentucky\"}, {text: \"Louisiana\", id: \"louisiana\"}, {text: \"Maine\", id: \"maine\"}, {text: \"Maryland\", id: \"maryland\"}, {text: \"Massachusetts\", id: \"massachusetts\"}, {text: \"Michigan\", id: \"michigan\"}, {text: \"Minnesota\", id: \"minnesota\"}, {text: \"Mississippi\", id: \"mississippi\"}, {text: \"Missouri\", id: \"missouri\"}, {text: \"Montana\", id: \"montana\"}, {text: \"Nebraska\", id: \"nebraska\"}, {text: \"Nevada\", id: \"nevada\"}, {text: \"New Hampshire\", id: \"new-hampshire\"}, {text: \"New Jersey\", id: \"new-jersey\"}, {text: \"New Mexico\", id: \"new-mexico\"}, {text: \"New York\", id: \"new-york\"}, {text: \"North Carolina\", id: \"north-carolina\"}, {text: \"North Dakota\", id: \"north-dakota\"}, {text: \"Ohio\", id: \"ohio\"}, {text: \"Oklahoma\", id: \"oklahoma\"}, {text: \"Oregon\", id: \"oregon\"}, {text: \"Pennsylvania\", id: \"pennsylvania\"}, {text: \"Rhode Island\", id: \"rhode-island\"}, {text: \"South Carolina\", id: \"south-carolina\"}, {text: \"South Dakota\", id: \"south-dakota\"}, {text: \"Tennessee\", id: \"tennessee\"}, {text: \"Texas\", id: \"texas\"}, {text: \"Utah\", id: \"utah\"}, {text: \"Vermont\", id: \"vermont\"}, {text: \"Virginia\", id: \"virginia\"}, {text: \"Washington\", id: \"washington\"}, {text: \"West Virginia\", id: \"west-virginia\"}, {text: \"Wisconsin\", id: \"wisconsin\"}, {text: \"Wyoming\", id: \"wyoming\"}, ]; </script> <DataSelect items={ITEMS.map((item, index) => { return { ...item, palette: index % 5 === 0 ? \"negative\" : item.palette, }; })} logic_name=\"dataselect-item-palette\" logic_state=\"alabama\" placeholder=\"Select a US State...\" /> "},{"identifier":"/docs/widgets/datatable","title":"DataTable","text":"DataTable NOTE : Introduced feature in v0.5.3. WARNING : This feature can cause layout shifting and performance degradation during rehydration. DataTable is a subset of Table Widget which automatically handles formatting tabular data into HTML. <script> import {DataTable} from \"@kahi-ui/framework\"; const COLUMNS = [ { text: \"First Name\", key: \"first_name\", sorting: true, }, { text: \"Last Name\", key: \"last_name\", sorting: true, }, { text: \"Occupation\", key: \"occupation\", sorting: true, }, { text: \"Species\", key: \"species\", sorting: true, }, ]; const ROWS = [ { first_name: \"Ahsoka\", last_name: \"Tano\", occupation: \"Unknown\", species: \"Togruta\", }, { first_name: \"Cad\", last_name: \"Bane\", occupation: \"Bounty Hunter\", species: \"Duros\", }, { first_name: \"Cobb\", last_name: \"Vanth\", occupation: \"Marshal\", species: \"Human\", }, { first_name: \"Din\", last_name: \"Djarin\", occupation: \"Bounty Hunter\", species: \"Human\", }, { first_name: \"Fennec\", last_name: \"Shand\", occupation: \"Assassin\", species: \"Human\", }, { first_name: \"Gilad\", last_name: \"Pellaeon\", occupation: \"Grand Admiral\", species: \"Human\", }, { first_name: \"Jagged\", last_name: \"Fel\", occupation: \"Emperor\", species: \"Human\", }, { first_name: \"Max\", last_name: \"Rebo\", occupation: \"Musician\", species: \"Ortolan\", }, { first_name: \"Mok\", last_name: \"Shaiz\", occupation: \"Mayor\", species: \"Ithorian\", }, { first_name: \"Natasi\", last_name: \"Daala\", occupation: \"Chief of State\", species: \"Human\", }, { first_name: \"Quinlan\", last_name: \"Vos\", occupation: \"Jedi Master\", species: \"Kiffar\", }, { first_name: \"Tila\", last_name: \"Mong\", occupation: \"Baron Do Sage\", species: \"Kel Dor\", }, ]; </script> <DataTable columns={COLUMNS} rows={ROWS} palette=\"accent\" paginate /> Imports <script> import {DataTable} from \"@kahi-ui/framework\"; </script> Pagination Via the paginate property, you can enable pagination of the input rows. <script> import {DataTable} from \"@kahi-ui/framework\"; const COLUMNS = [ { text: \"First Name\", key: \"first_name\", }, { text: \"Last Name\", key: \"last_name\", }, { text: \"Occupation\", key: \"occupation\", }, { text: \"Species\", key: \"species\", }, ]; const ROWS = [ { first_name: \"Ahsoka\", last_name: \"Tano\", occupation: \"Unknown\", species: \"Togruta\", }, { first_name: \"Cad\", last_name: \"Bane\", occupation: \"Bounty Hunter\", species: \"Duros\", }, { first_name: \"Cobb\", last_name: \"Vanth\", occupation: \"Marshal\", species: \"Human\", }, { first_name: \"Din\", last_name: \"Djarin\", occupation: \"Bounty Hunter\", species: \"Human\", }, { first_name: \"Fennec\", last_name: \"Shand\", occupation: \"Assassin\", species: \"Human\", }, { first_name: \"Gilad\", last_name: \"Pellaeon\", occupation: \"Grand Admiral\", species: \"Human\", }, { first_name: \"Jagged\", last_name: \"Fel\", occupation: \"Emperor\", species: \"Human\", }, { first_name: \"Max\", last_name: \"Rebo\", occupation: \"Musician\", species: \"Ortolan\", }, { first_name: \"Mok\", last_name: \"Shaiz\", occupation: \"Mayor\", species: \"Ithorian\", }, { first_name: \"Natasi\", last_name: \"Daala\", occupation: \"Chief of State\", species: \"Human\", }, { first_name: \"Quinlan\", last_name: \"Vos\", occupation: \"Jedi Master\", species: \"Kiffar\", }, { first_name: \"Tila\", last_name: \"Mong\", occupation: \"Baron Do Sage\", species: \"Kel Dor\", }, ]; </script> <DataTable columns={COLUMNS} rows={ROWS} palette=\"accent\" paginate /> You can control the current page via the page property. <script> import {DataTable} from \"@kahi-ui/framework\"; const COLUMNS = [ { text: \"First Name\", key: \"first_name\", }, { text: \"Last Name\", key: \"last_name\", }, { text: \"Occupation\", key: \"occupation\", }, { text: \"Species\", key: \"species\", }, ]; const ROWS = [ { first_name: \"Ahsoka\", last_name: \"Tano\", occupation: \"Unknown\", species: \"Togruta\", }, { first_name: \"Cad\", last_name: \"Bane\", occupation: \"Bounty Hunter\", species: \"Duros\", }, { first_name: \"Cobb\", last_name: \"Vanth\", occupation: \"Marshal\", species: \"Human\", }, { first_name: \"Din\", last_name: \"Djarin\", occupation: \"Bounty Hunter\", species: \"Human\", }, { first_name: \"Fennec\", last_name: \"Shand\", occupation: \"Assassin\", species: \"Human\", }, { first_name: \"Gilad\", last_name: \"Pellaeon\", occupation: \"Grand Admiral\", species: \"Human\", }, { first_name: \"Jagged\", last_name: \"Fel\", occupation: \"Emperor\", species: \"Human\", }, { first_name: \"Max\", last_name: \"Rebo\", occupation: \"Musician\", species: \"Ortolan\", }, { first_name: \"Mok\", last_name: \"Shaiz\", occupation: \"Mayor\", species: \"Ithorian\", }, { first_name: \"Natasi\", last_name: \"Daala\", occupation: \"Chief of State\", species: \"Human\", }, { first_name: \"Quinlan\", last_name: \"Vos\", occupation: \"Jedi Master\", species: \"Kiffar\", }, { first_name: \"Tila\", last_name: \"Mong\", occupation: \"Baron Do Sage\", species: \"Kel Dor\", }, ]; </script> <DataTable columns={COLUMNS} rows={ROWS} page={3} palette=\"accent\" paginate /> Finally, you can also set up how many rows appear per page via the paging property. <script> import {DataTable} from \"@kahi-ui/framework\"; const COLUMNS = [ { text: \"First Name\", key: \"first_name\", }, { text: \"Last Name\", key: \"last_name\", }, { text: \"Occupation\", key: \"occupation\", }, { text: \"Species\", key: \"species\", }, ]; const ROWS = [ { first_name: \"Ahsoka\", last_name: \"Tano\", occupation: \"Unknown\", species: \"Togruta\", }, { first_name: \"Cad\", last_name: \"Bane\", occupation: \"Bounty Hunter\", species: \"Duros\", }, { first_name: \"Cobb\", last_name: \"Vanth\", occupation: \"Marshal\", species: \"Human\", }, { first_name: \"Din\", last_name: \"Djarin\", occupation: \"Bounty Hunter\", species: \"Human\", }, { first_name: \"Fennec\", last_name: \"Shand\", occupation: \"Assassin\", species: \"Human\", }, { first_name: \"Gilad\", last_name: \"Pellaeon\", occupation: \"Grand Admiral\", species: \"Human\", }, { first_name: \"Jagged\", last_name: \"Fel\", occupation: \"Emperor\", species: \"Human\", }, { first_name: \"Max\", last_name: \"Rebo\", occupation: \"Musician\", species: \"Ortolan\", }, { first_name: \"Mok\", last_name: \"Shaiz\", occupation: \"Mayor\", species: \"Ithorian\", }, { first_name: \"Natasi\", last_name: \"Daala\", occupation: \"Chief of State\", species: \"Human\", }, { first_name: \"Quinlan\", last_name: \"Vos\", occupation: \"Jedi Master\", species: \"Kiffar\", }, { first_name: \"Tila\", last_name: \"Mong\", occupation: \"Baron Do Sage\", species: \"Kel Dor\", }, ]; </script> <DataTable columns={COLUMNS} rows={ROWS} paging={8} palette=\"accent\" paginate /> Searching DataTable includes a bottom left search box which allows users to filter rows based on the input. You can customize the default via the searching property. <script> import {DataTable} from \"@kahi-ui/framework\"; const COLUMNS = [ { text: \"First Name\", key: \"first_name\", }, { text: \"Last Name\", key: \"last_name\", }, { text: \"Occupation\", key: \"occupation\", }, { text: \"Species\", key: \"species\", }, ]; const ROWS = [ { first_name: \"Ahsoka\", last_name: \"Tano\", occupation: \"Unknown\", species: \"Togruta\", }, { first_name: \"Cad\", last_name: \"Bane\", occupation: \"Bounty Hunter\", species: \"Duros\", }, { first_name: \"Cobb\", last_name: \"Vanth\", occupation: \"Marshal\", species: \"Human\", }, { first_name: \"Din\", last_name: \"Djarin\", occupation: \"Bounty Hunter\", species: \"Human\", }, { first_name: \"Fennec\", last_name: \"Shand\", occupation: \"Assassin\", species: \"Human\", }, { first_name: \"Gilad\", last_name: \"Pellaeon\", occupation: \"Grand Admiral\", species: \"Human\", }, { first_name: \"Jagged\", last_name: \"Fel\", occupation: \"Emperor\", species: \"Human\", }, { first_name: \"Max\", last_name: \"Rebo\", occupation: \"Musician\", species: \"Ortolan\", }, { first_name: \"Mok\", last_name: \"Shaiz\", occupation: \"Mayor\", species: \"Ithorian\", }, { first_name: \"Natasi\", last_name: \"Daala\", occupation: \"Chief of State\", species: \"Human\", }, { first_name: \"Quinlan\", last_name: \"Vos\", occupation: \"Jedi Master\", species: \"Kiffar\", }, { first_name: \"Tila\", last_name: \"Mong\", occupation: \"Baron Do Sage\", species: \"Kel Dor\", }, ]; </script> <DataTable columns={COLUMNS} rows={ROWS} searching=\"Bounty Hunter\" palette=\"accent\" /> By default, DataTable fuzzy filters each row's members converted into lower case strings. You can customize this behavior via the searching_algorithm property. <script> import {DataTable} from \"@kahi-ui/framework\"; const COLUMNS = [ { text: \"First Name\", key: \"first_name\", }, { text: \"Last Name\", key: \"last_name\", }, { text: \"Occupation\", key: \"occupation\", }, { text: \"Species\", key: \"species\", }, ]; const ROWS = [ { first_name: \"Ahsoka\", last_name: \"Tano\", occupation: \"Unknown\", species: \"Togruta\", }, { first_name: \"Cad\", last_name: \"Bane\", occupation: \"Bounty Hunter\", species: \"Duros\", }, { first_name: \"Cobb\", last_name: \"Vanth\", occupation: \"Marshal\", species: \"Human\", }, { first_name: \"Din\", last_name: \"Djarin\", occupation: \"Bounty Hunter\", species: \"Human\", }, { first_name: \"Fennec\", last_name: \"Shand\", occupation: \"Assassin\", species: \"Human\", }, { first_name: \"Gilad\", last_name: \"Pellaeon\", occupation: \"Grand Admiral\", species: \"Human\", }, { first_name: \"Jagged\", last_name: \"Fel\", occupation: \"Emperor\", species: \"Human\", }, { first_name: \"Max\", last_name: \"Rebo\", occupation: \"Musician\", species: \"Ortolan\", }, { first_name: \"Mok\", last_name: \"Shaiz\", occupation: \"Mayor\", species: \"Ithorian\", }, { first_name: \"Natasi\", last_name: \"Daala\", occupation: \"Chief of State\", species: \"Human\", }, { first_name: \"Quinlan\", last_name: \"Vos\", occupation: \"Jedi Master\", species: \"Kiffar\", }, { first_name: \"Tila\", last_name: \"Mong\", occupation: \"Baron Do Sage\", species: \"Kel Dor\", }, ]; let searching = \"\"; function searching_algorithm(row) { // Instead of fuzzy searching the strings, we're only // looking if the first name BEGINS with our search filter return row.first_name.startsWith(searching); } </script> <DataTable columns={COLUMNS} rows={ROWS} palette=\"accent\" {searching_algorithm} bind:searching /> Sorting By passing in the sorting member in your columns property metadata, you can enable sorting on individual columns. <script> import {DataTable} from \"@kahi-ui/framework\"; const COLUMNS = [ { text: \"First Name\", key: \"first_name\", }, { text: \"Last Name\", key: \"last_name\", }, { text: \"Occupation\", key: \"occupation\", sorting: true, }, { text: \"Species\", key: \"species\", }, ]; const ROWS = [ { first_name: \"Ahsoka\", last_name: \"Tano\", occupation: \"Unknown\", species: \"Togruta\", }, { first_name: \"Cad\", last_name: \"Bane\", occupation: \"Bounty Hunter\", species: \"Duros\", }, { first_name: \"Cobb\", last_name: \"Vanth\", occupation: \"Marshal\", species: \"Human\", }, { first_name: \"Din\", last_name: \"Djarin\", occupation: \"Bounty Hunter\", species: \"Human\", }, { first_name: \"Fennec\", last_name: \"Shand\", occupation: \"Assassin\", species: \"Human\", }, { first_name: \"Gilad\", last_name: \"Pellaeon\", occupation: \"Grand Admiral\", species: \"Human\", }, { first_name: \"Jagged\", last_name: \"Fel\", occupation: \"Emperor\", species: \"Human\", }, { first_name: \"Max\", last_name: \"Rebo\", occupation: \"Musician\", species: \"Ortolan\", }, { first_name: \"Mok\", last_name: \"Shaiz\", occupation: \"Mayor\", species: \"Ithorian\", }, { first_name: \"Natasi\", last_name: \"Daala\", occupation: \"Chief of State\", species: \"Human\", }, { first_name: \"Quinlan\", last_name: \"Vos\", occupation: \"Jedi Master\", species: \"Kiffar\", }, { first_name: \"Tila\", last_name: \"Mong\", occupation: \"Baron Do Sage\", species: \"Kel Dor\", }, ]; </script> <DataTable columns={COLUMNS} rows={ROWS} palette=\"accent\" /> By passing a column key to the sorting property, you can set which is the column actively being sorted by. Then you can set the sorting_mode property to choose either ascending or descending sort. <script> import {DataTable} from \"@kahi-ui/framework\"; const COLUMNS = [ { text: \"First Name\", key: \"first_name\", }, { text: \"Last Name\", key: \"last_name\", }, { text: \"Occupation\", key: \"occupation\", sorting: true, }, { text: \"Species\", key: \"species\", }, ]; const ROWS = [ { first_name: \"Ahsoka\", last_name: \"Tano\", occupation: \"Unknown\", species: \"Togruta\", }, { first_name: \"Cad\", last_name: \"Bane\", occupation: \"Bounty Hunter\", species: \"Duros\", }, { first_name: \"Cobb\", last_name: \"Vanth\", occupation: \"Marshal\", species: \"Human\", }, { first_name: \"Din\", last_name: \"Djarin\", occupation: \"Bounty Hunter\", species: \"Human\", }, { first_name: \"Fennec\", last_name: \"Shand\", occupation: \"Assassin\", species: \"Human\", }, { first_name: \"Gilad\", last_name: \"Pellaeon\", occupation: \"Grand Admiral\", species: \"Human\", }, { first_name: \"Jagged\", last_name: \"Fel\", occupation: \"Emperor\", species: \"Human\", }, { first_name: \"Max\", last_name: \"Rebo\", occupation: \"Musician\", species: \"Ortolan\", }, { first_name: \"Mok\", last_name: \"Shaiz\", occupation: \"Mayor\", species: \"Ithorian\", }, { first_name: \"Natasi\", last_name: \"Daala\", occupation: \"Chief of State\", species: \"Human\", }, { first_name: \"Quinlan\", last_name: \"Vos\", occupation: \"Jedi Master\", species: \"Kiffar\", }, { first_name: \"Tila\", last_name: \"Mong\", occupation: \"Baron Do Sage\", species: \"Kel Dor\", }, ]; </script> <DataTable columns={COLUMNS} rows={ROWS} sorting=\"occupation\" sorting_mode=\"descending\" palette=\"accent\" /> By default, DataTable alphabetizes each row's members converted into lower case strings. You can customize this behavior on a per column-basis via the sorting_algorithm member in the column metadata. <script> import {DataTable} from \"@kahi-ui/framework\"; const COLUMNS = [ { text: \"First Name\", key: \"first_name\", }, { text: \"Last Name\", key: \"last_name\", }, { text: \"Occupation\", key: \"occupation\", sorting: true, sorting_algorithm: (a, b) => { // Instead of alphabetizing, we're sorting by length of // the `occupation` strings return a.length > b.length ? 1 : -1; }, }, { text: \"Species\", key: \"species\", }, ]; const ROWS = [ { first_name: \"Ahsoka\", last_name: \"Tano\", occupation: \"Unknown\", species: \"Togruta\", }, { first_name: \"Cad\", last_name: \"Bane\", occupation: \"Bounty Hunter\", species: \"Duros\", }, { first_name: \"Cobb\", last_name: \"Vanth\", occupation: \"Marshal\", species: \"Human\", }, { first_name: \"Din\", last_name: \"Djarin\", occupation: \"Bounty Hunter\", species: \"Human\", }, { first_name: \"Fennec\", last_name: \"Shand\", occupation: \"Assassin\", species: \"Human\", }, { first_name: \"Gilad\", last_name: \"Pellaeon\", occupation: \"Grand Admiral\", species: \"Human\", }, { first_name: \"Jagged\", last_name: \"Fel\", occupation: \"Emperor\", species: \"Human\", }, { first_name: \"Max\", last_name: \"Rebo\", occupation: \"Musician\", species: \"Ortolan\", }, { first_name: \"Mok\", last_name: \"Shaiz\", occupation: \"Mayor\", species: \"Ithorian\", }, { first_name: \"Natasi\", last_name: \"Daala\", occupation: \"Chief of State\", species: \"Human\", }, { first_name: \"Quinlan\", last_name: \"Vos\", occupation: \"Jedi Master\", species: \"Kiffar\", }, { first_name: \"Tila\", last_name: \"Mong\", occupation: \"Baron Do Sage\", species: \"Kel Dor\", }, ]; </script> <DataTable columns={COLUMNS} rows={ROWS} palette=\"accent\" /> Slot You can customize how each row member is rendered via the default slot. <script> import { DataTable, TextInput, } from \"@kahi-ui/framework\"; const COLUMNS = [ { text: \"First Name\", key: \"first_name\", }, { text: \"Last Name\", key: \"last_name\", }, { text: \"Occupation\", key: \"occupation\", }, { text: \"Species\", key: \"species\", }, ]; let ROWS = [ { first_name: \"Ahsoka\", last_name: \"Tano\", occupation: \"Unknown\", species: \"Togruta\", }, { first_name: \"Cad\", last_name: \"Bane\", occupation: \"Bounty Hunter\", species: \"Duros\", }, { first_name: \"Cobb\", last_name: \"Vanth\", occupation: \"Marshal\", species: \"Human\", }, { first_name: \"Din\", last_name: \"Djarin\", occupation: \"Bounty Hunter\", species: \"Human\", }, { first_name: \"Fennec\", last_name: \"Shand\", occupation: \"Assassin\", species: \"Human\", }, { first_name: \"Gilad\", last_name: \"Pellaeon\", occupation: \"Grand Admiral\", species: \"Human\", }, { first_name: \"Jagged\", last_name: \"Fel\", occupation: \"Emperor\", species: \"Human\", }, { first_name: \"Max\", last_name: \"Rebo\", occupation: \"Musician\", species: \"Ortolan\", }, { first_name: \"Mok\", last_name: \"Shaiz\", occupation: \"Mayor\", species: \"Ithorian\", }, { first_name: \"Natasi\", last_name: \"Daala\", occupation: \"Chief of State\", species: \"Human\", }, { first_name: \"Quinlan\", last_name: \"Vos\", occupation: \"Jedi Master\", species: \"Kiffar\", }, { first_name: \"Tila\", last_name: \"Mong\", occupation: \"Baron Do Sage\", species: \"Kel Dor\", }, ]; function on_first_name_input(row, event) { const index = ROWS.findIndex( (_row) => row === _row ); // NOTE: You should always clone your array / object data // before making mutations! Saves headaches down the road ROWS = [...ROWS]; ROWS[index] = { ...row, first_name: event.target.value, }; } </script> <DataTable columns={COLUMNS} rows={ROWS} palette=\"accent\" > <svelte:fragment let:key let:row> {#if key === \"first_name\"} <TextInput value={row[\"first_name\"]} variation=\"flush\" width=\"100\" on:input={on_first_name_input.bind( null, row )} /> {:else} {row[key]} {/if} </svelte:fragment> </DataTable> You can also customize the icons of the decrement / increment paging buttons via the previous / next slots respectively. <script> import { DataTable, TextInput, } from \"@kahi-ui/framework\"; const COLUMNS = [ { text: \"First Name\", key: \"first_name\", }, { text: \"Last Name\", key: \"last_name\", }, { text: \"Occupation\", key: \"occupation\", }, { text: \"Species\", key: \"species\", }, ]; const ROWS = [ { first_name: \"Ahsoka\", last_name: \"Tano\", occupation: \"Unknown\", species: \"Togruta\", }, { first_name: \"Cad\", last_name: \"Bane\", occupation: \"Bounty Hunter\", species: \"Duros\", }, { first_name: \"Cobb\", last_name: \"Vanth\", occupation: \"Marshal\", species: \"Human\", }, { first_name: \"Din\", last_name: \"Djarin\", occupation: \"Bounty Hunter\", species: \"Human\", }, { first_name: \"Fennec\", last_name: \"Shand\", occupation: \"Assassin\", species: \"Human\", }, { first_name: \"Gilad\", last_name: \"Pellaeon\", occupation: \"Grand Admiral\", species: \"Human\", }, { first_name: \"Jagged\", last_name: \"Fel\", occupation: \"Emperor\", species: \"Human\", }, { first_name: \"Max\", last_name: \"Rebo\", occupation: \"Musician\", species: \"Ortolan\", }, { first_name: \"Mok\", last_name: \"Shaiz\", occupation: \"Mayor\", species: \"Ithorian\", }, { first_name: \"Natasi\", last_name: \"Daala\", occupation: \"Chief of State\", species: \"Human\", }, { first_name: \"Quinlan\", last_name: \"Vos\", occupation: \"Jedi Master\", species: \"Kiffar\", }, { first_name: \"Tila\", last_name: \"Mong\", occupation: \"Baron Do Sage\", species: \"Kel Dor\", }, ]; </script> <DataTable columns={COLUMNS} rows={ROWS} palette=\"accent\" paginate > <svelte:fragment slot=\"previous\"> - </svelte:fragment> <svelte:fragment slot=\"next\">+</svelte:fragment> </DataTable> Finally, you can also customize the icons for the not sorted, ascending sort, and descending sorting buttons via the unsorted, ascending, and descending slots respectively. <script> import { DataTable, TextInput, } from \"@kahi-ui/framework\"; const COLUMNS = [ { text: \"First Name\", key: \"first_name\", sorting: true, }, { text: \"Last Name\", key: \"last_name\", }, { text: \"Occupation\", key: \"occupation\", }, { text: \"Species\", key: \"species\", }, ]; const ROWS = [ { first_name: \"Ahsoka\", last_name: \"Tano\", occupation: \"Unknown\", species: \"Togruta\", }, { first_name: \"Cad\", last_name: \"Bane\", occupation: \"Bounty Hunter\", species: \"Duros\", }, { first_name: \"Cobb\", last_name: \"Vanth\", occupation: \"Marshal\", species: \"Human\", }, { first_name: \"Din\", last_name: \"Djarin\", occupation: \"Bounty Hunter\", species: \"Human\", }, { first_name: \"Fennec\", last_name: \"Shand\", occupation: \"Assassin\", species: \"Human\", }, { first_name: \"Gilad\", last_name: \"Pellaeon\", occupation: \"Grand Admiral\", species: \"Human\", }, { first_name: \"Jagged\", last_name: \"Fel\", occupation: \"Emperor\", species: \"Human\", }, { first_name: \"Max\", last_name: \"Rebo\", occupation: \"Musician\", species: \"Ortolan\", }, { first_name: \"Mok\", last_name: \"Shaiz\", occupation: \"Mayor\", species: \"Ithorian\", }, { first_name: \"Natasi\", last_name: \"Daala\", occupation: \"Chief of State\", species: \"Human\", }, { first_name: \"Quinlan\", last_name: \"Vos\", occupation: \"Jedi Master\", species: \"Kiffar\", }, { first_name: \"Tila\", last_name: \"Mong\", occupation: \"Baron Do Sage\", species: \"Kel Dor\", }, ]; </script> <DataTable columns={COLUMNS} rows={ROWS} palette=\"accent\" paginate > <svelte:fragment slot=\"unsorted\"> =/= </svelte:fragment> <svelte:fragment slot=\"ascending\"> ASC </svelte:fragment> <svelte:fragment slot=\"descending\"> DEC </svelte:fragment> </DataTable> Variation Just like the Table Component, you can customize the variation property. <script> import { DataTable, Stack, Text, } from \"@kahi-ui/framework\"; const COLUMNS = [ { text: \"First Name\", key: \"first_name\", }, { text: \"Last Name\", key: \"last_name\", }, { text: \"Occupation\", key: \"occupation\", }, { text: \"Species\", key: \"species\", }, ]; const ROWS = [ { first_name: \"Ahsoka\", last_name: \"Tano\", occupation: \"Unknown\", species: \"Togruta\", }, { first_name: \"Cad\", last_name: \"Bane\", occupation: \"Bounty Hunter\", species: \"Duros\", }, { first_name: \"Cobb\", last_name: \"Vanth\", occupation: \"Marshal\", species: \"Human\", }, { first_name: \"Din\", last_name: \"Djarin\", occupation: \"Bounty Hunter\", species: \"Human\", }, { first_name: \"Fennec\", last_name: \"Shand\", occupation: \"Assassin\", species: \"Human\", }, { first_name: \"Gilad\", last_name: \"Pellaeon\", occupation: \"Grand Admiral\", species: \"Human\", }, { first_name: \"Jagged\", last_name: \"Fel\", occupation: \"Emperor\", species: \"Human\", }, { first_name: \"Max\", last_name: \"Rebo\", occupation: \"Musician\", species: \"Ortolan\", }, { first_name: \"Mok\", last_name: \"Shaiz\", occupation: \"Mayor\", species: \"Ithorian\", }, { first_name: \"Natasi\", last_name: \"Daala\", occupation: \"Chief of State\", species: \"Human\", }, { first_name: \"Quinlan\", last_name: \"Vos\", occupation: \"Jedi Master\", species: \"Kiffar\", }, { first_name: \"Tila\", last_name: \"Mong\", occupation: \"Baron Do Sage\", species: \"Kel Dor\", }, ]; </script> <Stack.Container spacing=\"medium\"> <div> <Text is=\"strong\">DEFAULT</Text> <DataTable columns={COLUMNS} rows={ROWS} paginate /> </div> <div> <Text is=\"strong\">BORDERS</Text> <DataTable columns={COLUMNS} rows={ROWS} variation=\"borders\" paginate /> </div> <div> <Text is=\"strong\">STRIPES</Text> <DataTable columns={COLUMNS} rows={ROWS} variation=\"stripes\" paginate /> </div> <div> <Text is=\"strong\">BORDERS+STRIPES</Text> <DataTable columns={COLUMNS} rows={ROWS} variation={[\"borders\", \"stripes\"]} paginate /> </div> </Stack.Container> Palette You can change the color palette of all the interactables via the palette property. <script> import { DataTable, Stack, Text, } from \"@kahi-ui/framework\"; const COLUMNS = [ { text: \"First Name\", key: \"first_name\", }, { text: \"Last Name\", key: \"last_name\", }, { text: \"Occupation\", key: \"occupation\", }, { text: \"Species\", key: \"species\", }, ]; const ROWS = [ { first_name: \"Ahsoka\", last_name: \"Tano\", occupation: \"Unknown\", species: \"Togruta\", }, { first_name: \"Cad\", last_name: \"Bane\", occupation: \"Bounty Hunter\", species: \"Duros\", }, { first_name: \"Cobb\", last_name: \"Vanth\", occupation: \"Marshal\", species: \"Human\", }, { first_name: \"Din\", last_name: \"Djarin\", occupation: \"Bounty Hunter\", species: \"Human\", }, { first_name: \"Fennec\", last_name: \"Shand\", occupation: \"Assassin\", species: \"Human\", }, { first_name: \"Gilad\", last_name: \"Pellaeon\", occupation: \"Grand Admiral\", species: \"Human\", }, { first_name: \"Jagged\", last_name: \"Fel\", occupation: \"Emperor\", species: \"Human\", }, { first_name: \"Max\", last_name: \"Rebo\", occupation: \"Musician\", species: \"Ortolan\", }, { first_name: \"Mok\", last_name: \"Shaiz\", occupation: \"Mayor\", species: \"Ithorian\", }, { first_name: \"Natasi\", last_name: \"Daala\", occupation: \"Chief of State\", species: \"Human\", }, { first_name: \"Quinlan\", last_name: \"Vos\", occupation: \"Jedi Master\", species: \"Kiffar\", }, { first_name: \"Tila\", last_name: \"Mong\", occupation: \"Baron Do Sage\", species: \"Kel Dor\", }, ]; </script> <Stack.Container spacing=\"medium\"> <div> <Text is=\"strong\">DEFAULT</Text> <DataTable columns={COLUMNS} rows={ROWS} paginate /> </div> <div> <Text is=\"strong\">ACCENT</Text> <DataTable columns={COLUMNS} rows={ROWS} palette=\"accent\" paginate /> </div> <div> <Text is=\"strong\">NEUTRAL</Text> <DataTable columns={COLUMNS} rows={ROWS} palette=\"neutral\" paginate /> </div> <div> <Text is=\"strong\">DARK</Text> <DataTable columns={COLUMNS} rows={ROWS} palette=\"dark\" paginate /> </div> <div> <Text is=\"strong\">LIGHT</Text> <DataTable columns={COLUMNS} rows={ROWS} palette=\"light\" paginate /> </div> <div> <Text is=\"strong\">ALERT</Text> <DataTable columns={COLUMNS} rows={ROWS} palette=\"alert\" paginate /> </div> <div> <Text is=\"strong\">AFFIRMATIVE</Text> <DataTable columns={COLUMNS} rows={ROWS} palette=\"affirmative\" paginate /> </div> <div> <Text is=\"strong\">INFORMATIVE</Text> <DataTable columns={COLUMNS} rows={ROWS} palette=\"informative\" paginate /> </div> <div> <Text is=\"strong\">NEGATIVE</Text> <DataTable columns={COLUMNS} rows={ROWS} palette=\"negative\" paginate /> </div> </Stack.Container> Sizing You can alter the overall spacing / sizing look and feel via the sizing property. <script> import { DataTable, Stack, Text, } from \"@kahi-ui/framework\"; const COLUMNS = [ { text: \"First Name\", key: \"first_name\", }, { text: \"Last Name\", key: \"last_name\", }, { text: \"Occupation\", key: \"occupation\", }, { text: \"Species\", key: \"species\", }, ]; const ROWS = [ { first_name: \"Ahsoka\", last_name: \"Tano\", occupation: \"Unknown\", species: \"Togruta\", }, { first_name: \"Cad\", last_name: \"Bane\", occupation: \"Bounty Hunter\", species: \"Duros\", }, { first_name: \"Cobb\", last_name: \"Vanth\", occupation: \"Marshal\", species: \"Human\", }, { first_name: \"Din\", last_name: \"Djarin\", occupation: \"Bounty Hunter\", species: \"Human\", }, { first_name: \"Fennec\", last_name: \"Shand\", occupation: \"Assassin\", species: \"Human\", }, { first_name: \"Gilad\", last_name: \"Pellaeon\", occupation: \"Grand Admiral\", species: \"Human\", }, { first_name: \"Jagged\", last_name: \"Fel\", occupation: \"Emperor\", species: \"Human\", }, { first_name: \"Max\", last_name: \"Rebo\", occupation: \"Musician\", species: \"Ortolan\", }, { first_name: \"Mok\", last_name: \"Shaiz\", occupation: \"Mayor\", species: \"Ithorian\", }, { first_name: \"Natasi\", last_name: \"Daala\", occupation: \"Chief of State\", species: \"Human\", }, { first_name: \"Quinlan\", last_name: \"Vos\", occupation: \"Jedi Master\", species: \"Kiffar\", }, { first_name: \"Tila\", last_name: \"Mong\", occupation: \"Baron Do Sage\", species: \"Kel Dor\", }, ]; </script> <Stack.Container spacing=\"medium\"> <div> <Text is=\"strong\">DEFAULT</Text> <DataTable columns={COLUMNS} rows={ROWS} paginate /> </div> <div> <Text is=\"strong\">TINY</Text> <DataTable columns={COLUMNS} rows={ROWS} sizing=\"tiny\" paginate /> </div> <div> <Text is=\"strong\">SMALL</Text> <DataTable columns={COLUMNS} rows={ROWS} sizing=\"small\" paginate /> </div> <div> <Text is=\"strong\">MEDIUM</Text> <DataTable columns={COLUMNS} rows={ROWS} sizing=\"medium\" paginate /> </div> <div> <Text is=\"strong\">LARGE</Text> <DataTable columns={COLUMNS} rows={ROWS} sizing=\"large\" paginate /> </div> <div> <Text is=\"strong\">HUGE</Text> <DataTable columns={COLUMNS} rows={ROWS} sizing=\"huge\" paginate /> </div> </Stack.Container> "},{"identifier":"/docs/widgets/daypicker","title":"DayPicker","text":"DayPicker NOTE : Introduced feature in v0.4.10. WARNING : This feature received a breaking change in v0.6.0 . DayPicker is a Widget that displays a calendar-style grid of days that a user can select from. <script> import {DayPicker} from \"@kahi-ui/framework\"; const timestamp = \"2021-11-10\"; const value = [\"2021-11-05\"]; </script> <DayPicker palette=\"accent\" width=\"content-max\" {timestamp} {value} /> Imports <script> import {DayPicker} from \"@kahi-ui/framework\"; </script> Disabled You can disable all interactivity via the disabled property. <script> import {DayPicker} from \"@kahi-ui/framework\"; const timestamp = \"2021-11-10\"; </script> <DayPicker palette=\"accent\" width=\"content-max\" {timestamp} disabled /> Disabled Days You can disable specific days from being selected via the disabled property. <script> import {DayPicker} from \"@kahi-ui/framework\"; const timestamp = \"2021-11-10\"; const disabled = [\"2021-11-05\", \"2021-11-19\"]; </script> <DayPicker palette=\"accent\" width=\"content-max\" {disabled} {timestamp} /> Multiple You can allow for multiple days to be selected via the multiple property. <script> import {DayPicker} from \"@kahi-ui/framework\"; const timestamp = \"2021-11-10\"; const value = [\"2021-11-05\", \"2021-11-19\"]; </script> <DayPicker palette=\"accent\" width=\"content-max\" {timestamp} {value} multiple /> Once You can disable selected days from being unselected via the once property. <script> import {DayPicker} from \"@kahi-ui/framework\"; const timestamp = \"2021-11-10\"; const value = [\"2021-11-05\"]; </script> <DayPicker palette=\"accent\" width=\"content-max\" {timestamp} {value} once /> Readonly You can disable interactivity without changing the visuals via the readonly property. <script> import {DayPicker} from \"@kahi-ui/framework\"; const timestamp = \"2021-11-10\"; </script> <DayPicker palette=\"accent\" width=\"content-max\" {timestamp} readonly /> Highlight NOTE : By default, the current day is used. You can select a specific set of days to be highlighted as outlines via the highlight property. <script> import {DayPicker} from \"@kahi-ui/framework\"; const timestamp = \"2021-11-10\"; const highlight = [ \"2021-11-11\", \"2021-11-12\", \"2021-11-13\", ]; </script> <DayPicker palette=\"accent\" width=\"content-max\" {highlight} {timestamp} /> Maximum + Minimum You can set maximum and minimum range of selectable days via the max / min properties. <script> import {DayPicker} from \"@kahi-ui/framework\"; const timestamp = \"2021-11-10\"; const max = \"2021-11-19\"; const min = \"2021-11-05\"; </script> <DayPicker palette=\"accent\" width=\"content-max\" {max} {min} {timestamp} /> Custom Format You can customize how the day component of the available timestamps is displayed via the day and weekday properties respectively. <script> import {DayPicker} from \"@kahi-ui/framework\"; const timestamp = \"2021-11-10\"; </script> <DayPicker palette=\"accent\" day=\"numeric\" weekday=\"long\" width=\"content-max\" {timestamp} /> Sizing You can alter the overall spacing / sizing look and feel via the sizing property. <script> import { DayPicker, Stack, Text, } from \"@kahi-ui/framework\"; const timestamp = \"2021-11-10\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" alignment_y=\"top\" variation=\"wrap\" > <div> <Text is=\"strong\">DEFAULT</Text> <DayPicker palette=\"accent\" width=\"content-max\" {timestamp} /> </div> <div> <Text is=\"strong\">NANO</Text> <DayPicker palette=\"accent\" sizing=\"nano\" width=\"content-max\" {timestamp} /> </div> <div> <Text is=\"strong\">TINY</Text> <DayPicker palette=\"accent\" sizing=\"tiny\" width=\"content-max\" {timestamp} /> </div> <div> <Text is=\"strong\">SMALL</Text> <DayPicker palette=\"accent\" sizing=\"small\" width=\"content-max\" {timestamp} /> </div> <div> <Text is=\"strong\">MEDIUM</Text> <DayPicker palette=\"accent\" sizing=\"medium\" width=\"content-max\" {timestamp} /> </div> <div> <Text is=\"strong\">LARGE</Text> <DayPicker palette=\"accent\" sizing=\"large\" width=\"content-max\" {timestamp} /> </div> <div> <Text is=\"strong\">HUGE</Text> <DayPicker palette=\"accent\" sizing=\"huge\" width=\"content-max\" {timestamp} /> </div> <div> <Text is=\"strong\">MASSIVE</Text> <DayPicker palette=\"accent\" sizing=\"massive\" width=\"content-max\" {timestamp} /> </div> </Stack.Container> "},{"identifier":"/docs/widgets/daystepper","title":"DayStepper","text":"DayStepper NOTE : Introduced feature in v0.4.10. WARNING : This feature received a breaking change in v0.6.0 . DayStepper is a Widget that lets users increment / decrement the currently provided day by a set number. <script> import {DayStepper} from \"@kahi-ui/framework\"; const value = \"2021-11-10\"; </script> <DayStepper palette=\"accent\" {value} /> Imports <script> import {DayStepper} from \"@kahi-ui/framework\"; </script> Disabled You can disable all interactivity via the disabled property. <script> import {DayStepper} from \"@kahi-ui/framework\"; const value = \"2021-11-10\"; </script> <DayStepper palette=\"accent\" {value} disabled /> Readonly You can disable interactivity without changing the visuals via the readonly property. <script> import {DayStepper} from \"@kahi-ui/framework\"; const value = \"2021-11-10\"; </script> <DayStepper palette=\"accent\" {value} readonly /> Maximum + Minimum You can set maximum and minimum range of steppable days via the max / min properties. <script> import {DayStepper} from \"@kahi-ui/framework\"; const value = \"2021-11-10\"; const max = \"2021-11-13\"; const min = \"2021-11-07\"; </script> <DayStepper palette=\"accent\" {max} {min} {value} /> Steps WARNING : This feature was renamed from step to steps in v0.6.0 . You can control how many days the buttons increment / decrement via the steps property. <script> import {DayStepper} from \"@kahi-ui/framework\"; const value = \"2021-11-10\"; </script> <DayStepper palette=\"accent\" steps={3} {value} /> Custom Format You can customize how the day and month components of the current timestamp is displayed via the day, weekday, and month properties respectively. <script> import {DayStepper} from \"@kahi-ui/framework\"; const value = \"2021-11-10\"; </script> <DayStepper palette=\"accent\" day=\"numeric\" month=\"numeric\" weekday=\"short\" {value} /> Sizing You can alter the overall spacing / sizing look and feel via the sizing property. <script> import { DayStepper, Stack, Text, } from \"@kahi-ui/framework\"; const value = \"2021-11-10\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" alignment_y=\"top\" variation=\"wrap\" > <div> <Text is=\"strong\">DEFAULT</Text> <DayStepper palette=\"accent\" {value} /> </div> <div> <Text is=\"strong\">NANO</Text> <DayStepper palette=\"accent\" sizing=\"nano\" {value} /> </div> <div> <Text is=\"strong\">TINY</Text> <DayStepper palette=\"accent\" sizing=\"tiny\" {value} /> </div> <div> <Text is=\"strong\">SMALL</Text> <DayStepper palette=\"accent\" sizing=\"small\" {value} /> </div> <div> <Text is=\"strong\">MEDIUM</Text> <DayStepper palette=\"accent\" sizing=\"medium\" {value} /> </div> <div> <Text is=\"strong\">LARGE</Text> <DayStepper palette=\"accent\" sizing=\"large\" {value} /> </div> <div> <Text is=\"strong\">HUGE</Text> <DayStepper palette=\"accent\" sizing=\"huge\" {value} /> </div> <div> <Text is=\"strong\">MASSIVE</Text> <DayStepper palette=\"accent\" sizing=\"massive\" {value} /> </div> </Stack.Container> "},{"identifier":"/docs/widgets/monthpicker","title":"MonthPicker","text":"MonthPicker NOTE : Introduced feature in v0.4.10. WARNING : This feature received a breaking change in v0.6.0 . MonthPicker is a Widget that displays a fiscal quaterly grid of months that a user can select from. <script> import {MonthPicker} from \"@kahi-ui/framework\"; const timestamp = \"2021-01-01\"; const value = [\"2021-06-01\"]; </script> <MonthPicker palette=\"accent\" width=\"content-max\" {timestamp} {value} /> Imports <script> import {MonthPicker} from \"@kahi-ui/framework\"; </script> Disabled You can disable all interactivity via the disabled property. <script> import {MonthPicker} from \"@kahi-ui/framework\"; const timestamp = \"2021-01-01\"; </script> <MonthPicker palette=\"accent\" width=\"content-max\" {timestamp} disabled /> Disabled Months You can disable specific months from being selected via the disabled property. <script> import {MonthPicker} from \"@kahi-ui/framework\"; const timestamp = \"2021-01-01\"; const disabled = [\"2021-06-01\", \"2021-12-01\"]; </script> <MonthPicker palette=\"accent\" width=\"content-max\" {disabled} {timestamp} /> Multiple You can allow for multiple months to be selected via the multiple property. <script> import {MonthPicker} from \"@kahi-ui/framework\"; const timestamp = \"2021-01-01\"; const value = [\"2021-06-01\", \"2021-12-01\"]; </script> <MonthPicker palette=\"accent\" width=\"content-max\" {timestamp} {value} multiple /> Once You can disable selected months from being unselected via the once property. <script> import {MonthPicker} from \"@kahi-ui/framework\"; const timestamp = \"2021-01-01\"; const value = [\"2021-06-01\"]; </script> <MonthPicker palette=\"accent\" width=\"content-max\" {timestamp} {value} once /> Readonly You can disable interactivity without changing the visuals via the readonly property. <script> import {MonthPicker} from \"@kahi-ui/framework\"; const timestamp = \"2021-01-01\"; </script> <MonthPicker palette=\"accent\" width=\"content-max\" {timestamp} readonly /> Highlight NOTE : By default, the current month is used. You can select a specific set of months to be highlighted as outlines via the highlight property. <script> import {MonthPicker} from \"@kahi-ui/framework\"; const timestamp = \"2021-01-01\"; const highlight = [ \"2021-10-01\", \"2021-11-01\", \"2021-12-01\", ]; </script> <MonthPicker palette=\"accent\" width=\"content-max\" {highlight} {timestamp} /> Maximum + Minimum You can set maximum and minimum range of selectable months via the max / min properties. <script> import {MonthPicker} from \"@kahi-ui/framework\"; const timestamp = \"2021-01-01\"; const max = \"2021-07-01\"; const min = \"2021-05-01\"; </script> <MonthPicker palette=\"accent\" width=\"content-max\" {max} {min} {timestamp} /> Custom Format You can customize how the month component of the available timestamps is displayed via the month property. <script> import {MonthPicker} from \"@kahi-ui/framework\"; const timestamp = \"2021-01-01\"; </script> <MonthPicker palette=\"accent\" month=\"long\" width=\"content-max\" {timestamp} /> Sizing You can alter the overall spacing / sizing look and feel via the sizing property. <script> import { MonthPicker, Stack, Text, } from \"@kahi-ui/framework\"; const timestamp = \"2021-01-01\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" alignment_y=\"top\" variation=\"wrap\" > <div> <Text is=\"strong\">DEFAULT</Text> <MonthPicker palette=\"accent\" width=\"content-max\" {timestamp} /> </div> <div> <Text is=\"strong\">NANO</Text> <MonthPicker palette=\"accent\" sizing=\"nano\" width=\"content-max\" {timestamp} /> </div> <div> <Text is=\"strong\">TINY</Text> <MonthPicker palette=\"accent\" sizing=\"tiny\" width=\"content-max\" {timestamp} /> </div> <div> <Text is=\"strong\">SMALL</Text> <MonthPicker palette=\"accent\" sizing=\"small\" width=\"content-max\" {timestamp} /> </div> <div> <Text is=\"strong\">MEDIUM</Text> <MonthPicker palette=\"accent\" sizing=\"medium\" width=\"content-max\" {timestamp} /> </div> <div> <Text is=\"strong\">LARGE</Text> <MonthPicker palette=\"accent\" sizing=\"large\" width=\"content-max\" {timestamp} /> </div> <div> <Text is=\"strong\">HUGE</Text> <MonthPicker palette=\"accent\" sizing=\"huge\" width=\"content-max\" {timestamp} /> </div> <div> <Text is=\"strong\">MASSIVE</Text> <MonthPicker palette=\"accent\" sizing=\"massive\" width=\"content-max\" {timestamp} /> </div> </Stack.Container> "},{"identifier":"/docs/widgets/monthstepper","title":"MonthStepper","text":"MonthStepper NOTE : Introduced feature in v0.4.10. WARNING : This feature received a breaking change in v0.6.0 . MonthStepper is a Widget that lets users increment / decrement the currently provided month by a set number. <script> import {MonthStepper} from \"@kahi-ui/framework\"; const value = \"2021-06-01\"; </script> <MonthStepper palette=\"accent\" {value} /> Imports <script> import {MonthStepper} from \"@kahi-ui/framework\"; </script> Disabled You can disable all interactivity via the disabled property. <script> import {MonthStepper} from \"@kahi-ui/framework\"; const value = \"2021-06-01\"; </script> <MonthStepper palette=\"accent\" {value} disabled /> Readonly You can disable interactivity without changing the visuals via the readonly property. <script> import {MonthStepper} from \"@kahi-ui/framework\"; const value = \"2021-06-01\"; </script> <MonthStepper palette=\"accent\" {value} readonly /> Maximum + Minimum You can set maximum and minimum range of steppable months via the max / min properties. <script> import {MonthStepper} from \"@kahi-ui/framework\"; const value = \"2021-06-01\"; const max = \"2021-07-01\"; const min = \"2021-05-01\"; </script> <MonthStepper palette=\"accent\" {max} {min} {value} /> Steps WARNING : This feature was renamed from step to steps in v0.6.0 . You can control how many months the buttons increment / decrement via the steps property. <script> import {MonthStepper} from \"@kahi-ui/framework\"; const value = \"2021-06-01\"; </script> <MonthStepper palette=\"accent\" steps={3} {value} /> Custom Format You can customize how the month and year components of the current timestamp is displayed via the month and year properties respectively. <script> import {MonthStepper} from \"@kahi-ui/framework\"; const value = \"2021-06-01\"; </script> <MonthStepper palette=\"accent\" month=\"numeric\" year=\"2-digit\" {value} /> Sizing You can alter the overall spacing / sizing look and feel via the sizing property. <script> import { MonthStepper, Stack, Text, } from \"@kahi-ui/framework\"; const value = \"2021-06-01\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" alignment_y=\"top\" variation=\"wrap\" > <div> <Text is=\"strong\">DEFAULT</Text> <MonthStepper palette=\"accent\" {value} /> </div> <div> <Text is=\"strong\">NANO</Text> <MonthStepper palette=\"accent\" sizing=\"nano\" {value} /> </div> <div> <Text is=\"strong\">TINY</Text> <MonthStepper palette=\"accent\" sizing=\"tiny\" {value} /> </div> <div> <Text is=\"strong\">SMALL</Text> <MonthStepper palette=\"accent\" sizing=\"small\" {value} /> </div> <div> <Text is=\"strong\">MEDIUM</Text> <MonthStepper palette=\"accent\" sizing=\"medium\" {value} /> </div> <div> <Text is=\"strong\">LARGE</Text> <MonthStepper palette=\"accent\" sizing=\"large\" {value} /> </div> <div> <Text is=\"strong\">HUGE</Text> <MonthStepper palette=\"accent\" sizing=\"huge\" {value} /> </div> <div> <Text is=\"strong\">MASSIVE</Text> <MonthStepper palette=\"accent\" sizing=\"massive\" {value} /> </div> </Stack.Container> "},{"identifier":"/docs/widgets/pagination","title":"Pagination","text":"Pagination NOTE : Introduced feature in v0.5.1. Pagination is typically used for allowing the user to navigate data or content that is separated into groupings of information, or \"pages\". <script> import {Pagination} from \"@kahi-ui/framework\"; let value = 5; </script> <Pagination pages={10} palette=\"accent\" {value} on:select={(event) => { const page = event.detail.page; value = page; }} /> Imports <script> import {Pagination} from \"@kahi-ui/framework\"; </script> Paging You can set how many pages there are for the associated content and which page is current via the pages / value properties respectively. <script> import {Pagination} from \"@kahi-ui/framework\"; </script> <Pagination pages={42} value={24} palette=\"accent\" /> Anchors WARNING : This feature was updated to require explicit is property in v0.6.0 . IMPORTANT : The ${page} token is non-standard string substitution provided by this feature, and must be set via string expressions, e.g. href={\"/path/to/list/${page}\"}. You can have the paging buttons be anchors via href property. And adding ${page} in your link where you want the page number to be inserted. <script> import {Pagination} from \"@kahi-ui/framework\"; </script> <Pagination is=\"a\" href={\"/path/to/list?page=${page}\"} pages={42} value={24} palette=\"accent\" /> Steps You can change how many incremental / decremental steps of paging buttons are displayed via the steps property. <script> import {Pagination} from \"@kahi-ui/framework\"; </script> <Pagination pages={10} steps={3} value={5} palette=\"accent\" /> Slot You can alter the icons / text used for the previous / next buttons via the previous / next slots respectively. <!-- prettier-ignore --> <script> import {Pagination} from \"@kahi-ui/framework\"; </script> <Pagination pages={10} value={5} palette=\"accent\"> <svelte:fragment slot=\"previous\"> - </svelte:fragment> <svelte:fragment slot=\"next\"> + </svelte:fragment> </Pagination> Palette You can change the color palette of the Pagination via the palette property. <script> import { Pagination, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container spacing=\"medium\"> <div> <Text is=\"strong\">DEFAULT</Text> <Pagination pages={10} value={5} /> </div> <div> <Text is=\"strong\">ACCENT</Text> <Pagination pages={10} value={5} palette=\"accent\" /> </div> <div> <Text is=\"strong\">NEUTRAL</Text> <Pagination pages={10} value={5} palette=\"neutral\" /> </div> <div> <Text is=\"strong\">DARK</Text> <Pagination pages={10} value={5} palette=\"dark\" /> </div> <div> <Text is=\"strong\">LIGHT</Text> <Pagination pages={10} value={5} palette=\"light\" /> </div> <div> <Text is=\"strong\">ALERT</Text> <Pagination pages={10} value={5} palette=\"alert\" /> </div> <div> <Text is=\"strong\">AFFIRMATIVE</Text> <Pagination pages={10} value={5} palette=\"affirmative\" /> </div> <div> <Text is=\"strong\">INFORMATIVE</Text> <Pagination pages={10} value={5} palette=\"informative\" /> </div> <div> <Text is=\"strong\">NEGATIVE</Text> <Pagination pages={10} value={5} palette=\"negative\" /> </div> </Stack.Container> Sizing You can alter the overall sizing look and feel via the sizing property. <script> import { Pagination, Stack, Text, } from \"@kahi-ui/framework\"; </script> <Stack.Container spacing=\"medium\"> <div> <Text is=\"strong\">DEFAULT</Text> <Pagination pages={10} value={5} /> </div> <div> <Text is=\"strong\">NANO</Text> <Pagination pages={10} value={5} sizing=\"nano\" /> </div> <div> <Text is=\"strong\">TINY</Text> <Pagination pages={10} value={5} sizing=\"tiny\" /> </div> <div> <Text is=\"strong\">SMALL</Text> <Pagination pages={10} value={5} sizing=\"small\" /> </div> <div> <Text is=\"strong\">MEDIUM</Text> <Pagination pages={10} value={5} sizing=\"medium\" /> </div> <div> <Text is=\"strong\">LARGE</Text> <Pagination pages={10} value={5} sizing=\"large\" /> </div> <div> <Text is=\"strong\">HUGE</Text> <Pagination pages={10} value={5} sizing=\"huge\" /> </div> <div> <Text is=\"strong\">MASSIVE</Text> <Pagination pages={10} value={5} sizing=\"massive\" /> </div> </Stack.Container> "},{"identifier":"/docs/widgets/timepicker","title":"TimePicker","text":"TimePicker NOTE : Introduced feature in v0.4.10. TimePicker is a Widget that displays a set of hour, minute, second clock scrollable areas that a user can select from. <script> import {TimePicker} from \"@kahi-ui/framework\"; const value = \"13:30:15\"; </script> <TimePicker palette=\"accent\" {value} /> Imports <script> import {TimePicker} from \"@kahi-ui/framework\"; </script> Now You can enable the displaying of a \"NOW\" button to allow the user to set the picker to the current time, via the now property. <script> import {TimePicker} from \"@kahi-ui/framework\"; const value = \"13:30:15\"; </script> <TimePicker palette=\"accent\" {value} now /> Auto Scroll WARNING : This feature can cause performance degradation in when mounted. You can enable auto scrolling to the currently set value when TimePicker is mounted, via the scroll property. <script> import {TimePicker} from \"@kahi-ui/framework\"; const value = \"13:30:15\"; </script> <TimePicker palette=\"accent\" {value} scroll /> 12 Hour NOTE : By default, this value respects the user default if available. You can have the hours render as 12-hour time (1...12 AM/PM) instead of 24-hour time (0...23) via the hour_12 property. <script> import {TimePicker} from \"@kahi-ui/framework\"; const value = \"13:30:15\"; </script> <TimePicker palette=\"accent\" {value} hour_12 /> 24 Hour NOTE : By default, this value respects the user default if available. You can have the hours render as 24-hour time (0...23) instead of 12-hour time (1...12 AM/PM) via the hour_12 property. <script> import {TimePicker} from \"@kahi-ui/framework\"; const value = \"13:30:15\"; </script> <TimePicker palette=\"accent\" hour_12={false} {value} /> Disabled You can disable all interactivity via the disabled property. <script> import {TimePicker} from \"@kahi-ui/framework\"; const value = \"13:30:15\"; </script> <TimePicker palette=\"accent\" {value} disabled /> Disabled Timestamps NOTE : Introduced feature in v0.6.0. You can disable specific timestamps from being selected via the disabled property. <script> import {TimePicker} from \"@kahi-ui/framework\"; const value = \"13:30:15\"; const disabled = [\"11:00:00\", \"15:00:00\"]; </script> <TimePicker palette=\"accent\" {disabled} {value} /> Highlight NOTE : By default, the current time is used. WARNING : This feature was changed to accept string[] instead of string in v0.6.0 . You can select a specific timestamp to be highlighted as outlines via the highlight property. <script> import {TimePicker} from \"@kahi-ui/framework\"; const value = \"13:30:15\"; const highlight = [\"15:00:00\"]; </script> <TimePicker palette=\"accent\" {highlight} {value} /> Maximum + Minimum You can set maximum and minimum range of selectable times via the max / min properties. <script> import {TimePicker} from \"@kahi-ui/framework\"; const value = \"13:30:15\"; const max = \"15:45:30\"; const min = \"11:15:00\"; </script> <TimePicker palette=\"accent\" {max} {min} {value} /> Custom Format You can customize how the hour, minute, second components of the available timestamps is displayed via the hour, minute, and second properties respectively. <script> import {TimePicker} from \"@kahi-ui/framework\"; const value = \"13:30:15\"; </script> <TimePicker palette=\"accent\" hour=\"2-digit\" minute=\"2-digit\" second=\"2-digit\" {value} hour_12 /> Sizing You can alter the overall spacing / sizing look and feel via the sizing property. <script> import { Stack, Text, TimePicker, } from \"@kahi-ui/framework\"; const value = \"13:30:15\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" alignment_y=\"top\" variation=\"wrap\" > <div> <Text is=\"strong\">DEFAULT</Text> <TimePicker palette=\"accent\" {value} /> </div> <div> <Text is=\"strong\">NANO</Text> <TimePicker palette=\"accent\" sizing=\"nano\" {value} /> </div> <div> <Text is=\"strong\">TINY</Text> <TimePicker palette=\"accent\" sizing=\"tiny\" {value} /> </div> <div> <Text is=\"strong\">SMALL</Text> <TimePicker palette=\"accent\" sizing=\"small\" {value} /> </div> <div> <Text is=\"strong\">MEDIUM</Text> <TimePicker palette=\"accent\" sizing=\"medium\" {value} /> </div> <div> <Text is=\"strong\">LARGE</Text> <TimePicker palette=\"accent\" sizing=\"large\" {value} /> </div> <div> <Text is=\"strong\">HUGE</Text> <TimePicker palette=\"accent\" sizing=\"huge\" {value} /> </div> <div> <Text is=\"strong\">MASSIVE</Text> <TimePicker palette=\"accent\" sizing=\"massive\" {value} /> </div> </Stack.Container> "},{"identifier":"/docs/widgets/yearpicker","title":"YearPicker","text":"YearPicker NOTE : Introduced feature in v0.4.10. WARNING : This feature received a breaking change in v0.6.0 . YearPicker is a Widget that displays a decade-based grid of years that a user can select from. <script> import {YearPicker} from \"@kahi-ui/framework\"; const timestamp = \"2020-01-01\"; const value = [\"2024-01-01\"]; </script> <YearPicker palette=\"accent\" width=\"content-max\" {timestamp} {value} /> Imports <script> import {YearPicker} from \"@kahi-ui/framework\"; </script> Disabled You can disable all interactivity via the disabled property. <script> import {YearPicker} from \"@kahi-ui/framework\"; const timestamp = \"2020-01-01\"; </script> <YearPicker palette=\"accent\" width=\"content-max\" {timestamp} disabled /> Disabled Years You can disable specific years from being selected via the disabled property. <script> import {YearPicker} from \"@kahi-ui/framework\"; const timestamp = \"2020-01-01\"; const disabled = [\"2025-01-01\", \"2023-01-01\"]; </script> <YearPicker palette=\"accent\" width=\"content-max\" {disabled} {timestamp} /> Multiple You can allow for multiple years to be selected via the multiple property. <script> import {YearPicker} from \"@kahi-ui/framework\"; const timestamp = \"2020-01-01\"; const value = [\"2025-01-01\", \"2023-01-01\"]; </script> <YearPicker palette=\"accent\" width=\"content-max\" {timestamp} {value} multiple /> Once You can disable selected years from being unselected via the once property. <script> import {YearPicker} from \"@kahi-ui/framework\"; const timestamp = \"2020-01-01\"; const value = [\"2024-01-01\"]; </script> <YearPicker palette=\"accent\" width=\"content-max\" {timestamp} {value} once /> Readonly You can disable interactivity without changing the visuals via the readonly property. <script> import {YearPicker} from \"@kahi-ui/framework\"; const timestamp = \"2020-01-01\"; </script> <YearPicker palette=\"accent\" width=\"content-max\" {timestamp} readonly /> Highlight NOTE : By default, the current year is used. You can select a specific set of years to be highlighted as outlines via the highlight property. <script> import {YearPicker} from \"@kahi-ui/framework\"; const timestamp = \"2020-01-01\"; const highlight = [ \"2025-01-01\", \"2026-01-01\", \"2027-01-01\", ]; </script> <YearPicker palette=\"accent\" width=\"content-max\" {highlight} {timestamp} /> Maximum + Minimum You can set maximum and minimum range of selectable years via the max / min properties. <script> import {YearPicker} from \"@kahi-ui/framework\"; const timestamp = \"2020-01-01\"; const max = \"2025-01-01\"; const min = \"2023-01-01\"; </script> <YearPicker palette=\"accent\" width=\"content-max\" {max} {min} {timestamp} /> Custom Format You can customize how the year component of the available timestamps is displayed via the year property. <script> import {YearPicker} from \"@kahi-ui/framework\"; const timestamp = \"2020-01-01\"; </script> <YearPicker palette=\"accent\" year=\"2-digit\" width=\"content-max\" {timestamp} /> Sizing You can alter the overall spacing / sizing look and feel via the sizing property. <script> import { YearPicker, Stack, Text, } from \"@kahi-ui/framework\"; const timestamp = \"2020-01-01\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" alignment_y=\"top\" variation=\"wrap\" > <div> <Text is=\"strong\">DEFAULT</Text> <YearPicker palette=\"accent\" width=\"content-max\" {timestamp} /> </div> <div> <Text is=\"strong\">TINY</Text> <YearPicker palette=\"accent\" sizing=\"tiny\" width=\"content-max\" {timestamp} /> </div> <div> <Text is=\"strong\">SMALL</Text> <YearPicker palette=\"accent\" sizing=\"small\" width=\"content-max\" {timestamp} /> </div> <div> <Text is=\"strong\">MEDIUM</Text> <YearPicker palette=\"accent\" sizing=\"medium\" width=\"content-max\" {timestamp} /> </div> <div> <Text is=\"strong\">LARGE</Text> <YearPicker palette=\"accent\" sizing=\"large\" width=\"content-max\" {timestamp} /> </div> <div> <Text is=\"strong\">HUGE</Text> <YearPicker palette=\"accent\" sizing=\"huge\" width=\"content-max\" {timestamp} /> </div> </Stack.Container> "},{"identifier":"/docs/widgets/yearstepper","title":"YearStepper","text":"YearStepper NOTE : Introduced feature in v0.4.10. WARNING : This feature received a breaking change in v0.6.0 . YearStepper is a Widget that lets users increment / decrement the currently provided year by a set number. <script> import {YearStepper} from \"@kahi-ui/framework\"; const value = \"2024-01-01\"; </script> <YearStepper palette=\"accent\" {value} /> Imports <script> import {YearStepper} from \"@kahi-ui/framework\"; </script> Disabled You can disable all interactivity via the disabled property. <script> import {YearStepper} from \"@kahi-ui/framework\"; const value = \"2024-01-01\"; </script> <YearStepper palette=\"accent\" {value} disabled /> Readonly You can disable interactivity without changing the visuals via the readonly property. <script> import {YearStepper} from \"@kahi-ui/framework\"; const value = \"2024-01-01\"; </script> <YearStepper palette=\"accent\" {value} readonly /> Maximum + Minimum You can set maximum and minimum range of steppable years via the max / min properties. <script> import {YearStepper} from \"@kahi-ui/framework\"; const value = \"2024-01-01\"; const max = \"2025-01-01\"; const min = \"2023-01-01\"; </script> <YearStepper palette=\"accent\" {max} {min} {value} /> Steps WARNING : This feature was renamed from step to steps in v0.6.0 . You can control how many years the buttons increment / decrement via the steps property. <script> import {YearStepper} from \"@kahi-ui/framework\"; const value = \"2024-01-01\"; </script> <YearStepper palette=\"accent\" steps={3} {value} /> Custom Format You can customize how the year component of the current timestamp is displayed via the year property. <script> import {YearStepper} from \"@kahi-ui/framework\"; const value = \"2024-01-01\"; </script> <YearStepper palette=\"accent\" year=\"2-digit\" {value} /> Sizing You can alter the overall spacing / sizing look and feel via the sizing property. <script> import { YearStepper, Stack, Text, } from \"@kahi-ui/framework\"; const value = \"2024-01-01\"; </script> <Stack.Container orientation=\"horizontal\" spacing=\"medium\" alignment_y=\"top\" variation=\"wrap\" > <div> <Text is=\"strong\">DEFAULT</Text> <YearStepper palette=\"accent\" {value} /> </div> <div> <Text is=\"strong\">NANO</Text> <YearStepper palette=\"accent\" sizing=\"nano\" {value} /> </div> <div> <Text is=\"strong\">TINY</Text> <YearStepper palette=\"accent\" sizing=\"tiny\" {value} /> </div> <div> <Text is=\"strong\">SMALL</Text> <YearStepper palette=\"accent\" sizing=\"small\" {value} /> </div> <div> <Text is=\"strong\">MEDIUM</Text> <YearStepper palette=\"accent\" sizing=\"medium\" {value} /> </div> <div> <Text is=\"strong\">LARGE</Text> <YearStepper palette=\"accent\" sizing=\"large\" {value} /> </div> <div> <Text is=\"strong\">HUGE</Text> <YearStepper palette=\"accent\" sizing=\"huge\" {value} /> </div> <div> <Text is=\"strong\">MASSIVE</Text> <YearStepper palette=\"accent\" sizing=\"massive\" {value} /> </div> </Stack.Container> "},{"identifier":"/playground?snippet=accordion-inclusive","title":"Accordion Inclusive","text":"<script>\n    import {\n        Accordion,\n        Heading,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Accordion.Container\n    behavior=\"inclusive\"\n    logic_name=\"accordion-inclusive\"\n>\n    <Accordion.Group logic_id=\"accordion-inclusive-1\">\n        <Accordion.Label palette=\"accent\">\n            Section One\n        </Accordion.Label>\n\n        <Accordion.Section>\n            <Heading>Item One Content</Heading>\n\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non. Orci varius natoque\n                penatibus et magnis dis parturient\n                montes, nascetur ridiculus mus.\n            </Text>\n        </Accordion.Section>\n    </Accordion.Group>\n\n    <Accordion.Group logic_id=\"accordion-inclusive-2\">\n        <Accordion.Label palette=\"accent\">\n            Section Two\n        </Accordion.Label>\n\n        <Accordion.Section>\n            <Heading>Item Two Content</Heading>\n\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non. Orci varius natoque\n                penatibus et magnis dis parturient\n                montes, nascetur ridiculus mus.\n            </Text>\n        </Accordion.Section>\n    </Accordion.Group>\n\n    <Accordion.Group logic_id=\"accordion-inclusive-3\">\n        <Accordion.Label palette=\"accent\">\n            Section Three\n        </Accordion.Label>\n\n        <Accordion.Section>\n            <Heading>Item Three Content</Heading>\n\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non. Orci varius natoque\n                penatibus et magnis dis parturient\n                montes, nascetur ridiculus mus.\n            </Text>\n        </Accordion.Section>\n    </Accordion.Group>\n</Accordion.Container>"},{"identifier":"/playground?snippet=accordion-loading","title":"Accordion Loading","text":"<script>\n    import {\n        Accordion,\n        Heading,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Accordion.Container logic_name=\"accordion-loading\">\n    <Accordion.Group logic_id=\"accordion-loading-1\">\n        <Accordion.Label palette=\"accent\">\n            Section One\n        </Accordion.Label>\n\n        <Accordion.Section loading=\"lazy\">\n            <Heading>Item One Content</Heading>\n\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non. Orci varius natoque\n                penatibus et magnis dis parturient\n                montes, nascetur ridiculus mus.\n            </Text>\n        </Accordion.Section>\n    </Accordion.Group>\n\n    <Accordion.Group logic_id=\"accordion-loading-2\">\n        <Accordion.Label palette=\"accent\">\n            Section Two\n        </Accordion.Label>\n\n        <Accordion.Section loading=\"lazy\">\n            <Heading>Item Two Content</Heading>\n\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non. Orci varius natoque\n                penatibus et magnis dis parturient\n                montes, nascetur ridiculus mus.\n            </Text>\n        </Accordion.Section>\n    </Accordion.Group>\n\n    <Accordion.Group logic_id=\"accordion-loading-3\">\n        <Accordion.Label palette=\"accent\">\n            Section Three\n        </Accordion.Label>\n\n        <Accordion.Section loading=\"lazy\">\n            <Heading>Item Three Content</Heading>\n\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non. Orci varius natoque\n                penatibus et magnis dis parturient\n                montes, nascetur ridiculus mus.\n            </Text>\n        </Accordion.Section>\n    </Accordion.Group>\n</Accordion.Container>"},{"identifier":"/playground?snippet=accordion-logic-state","title":"Accordion Logic State","text":"<script>\n    import {\n        Accordion,\n        Button,\n        Heading,\n        Text,\n    } from \"@kahi-ui/framework\";\n\n    let logic_state = \"accordion-logic-state-1\";\n</script>\n\n<Button\n    on:click={() =>\n        (logic_state = \"accordion-logic-state-1\")}\n>\n    Select Section One\n</Button>\n\n<Button\n    on:click={() =>\n        (logic_state = \"accordion-logic-state-2\")}\n>\n    Select Section Two\n</Button>\n\n<Button\n    on:click={() =>\n        (logic_state = \"accordion-logic-state-3\")}\n>\n    Select Section Three\n</Button>\n\n<Accordion.Container\n    logic_name=\"accordion-logic-state\"\n    bind:logic_state\n>\n    <Accordion.Group\n        logic_id=\"accordion-logic-state-1\"\n    >\n        <Accordion.Label palette=\"accent\">\n            Section One\n        </Accordion.Label>\n\n        <Accordion.Section>\n            <Heading>Item One Content</Heading>\n\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non. Orci varius natoque\n                penatibus et magnis dis parturient\n                montes, nascetur ridiculus mus.\n            </Text>\n        </Accordion.Section>\n    </Accordion.Group>\n\n    <Accordion.Group\n        logic_id=\"accordion-logic-state-2\"\n    >\n        <Accordion.Label palette=\"accent\">\n            Section Two\n        </Accordion.Label>\n\n        <Accordion.Section>\n            <Heading>Item Two Content</Heading>\n\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non. Orci varius natoque\n                penatibus et magnis dis parturient\n                montes, nascetur ridiculus mus.\n            </Text>\n        </Accordion.Section>\n    </Accordion.Group>\n\n    <Accordion.Group\n        logic_id=\"accordion-logic-state-3\"\n    >\n        <Accordion.Label palette=\"accent\">\n            Section Three\n        </Accordion.Label>\n\n        <Accordion.Section>\n            <Heading>Item Three Content</Heading>\n\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non. Orci varius natoque\n                penatibus et magnis dis parturient\n                montes, nascetur ridiculus mus.\n            </Text>\n        </Accordion.Section>\n    </Accordion.Group>\n</Accordion.Container>"},{"identifier":"/playground?snippet=accordion-palette","title":"Accordion Palette","text":"<script>\n    import {\n        Accordion,\n        Heading,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Accordion.Container logic_name=\"accordion-palette\">\n    <Accordion.Group\n        logic_id=\"accordion-palette-default\"\n    >\n        <Accordion.Label>\n            DEFAULT Section\n        </Accordion.Label>\n\n        <Accordion.Section>\n            <Heading>DEFAULT Content</Heading>\n\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non. Orci varius natoque\n                penatibus et magnis dis parturient\n                montes, nascetur ridiculus mus.\n            </Text>\n        </Accordion.Section>\n    </Accordion.Group>\n\n    <Accordion.Group\n        logic_id=\"accordion-palette-accent\"\n    >\n        <Accordion.Label palette=\"accent\">\n            ACCENT Section\n        </Accordion.Label>\n\n        <Accordion.Section>\n            <Heading>ACCENT Content</Heading>\n\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non. Orci varius natoque\n                penatibus et magnis dis parturient\n                montes, nascetur ridiculus mus.\n            </Text>\n        </Accordion.Section>\n    </Accordion.Group>\n\n    <Accordion.Group\n        logic_id=\"accordion-palette-neutral\"\n    >\n        <Accordion.Label palette=\"neutral\">\n            NEUTRAL Section\n        </Accordion.Label>\n\n        <Accordion.Section>\n            <Heading>NEUTRAL Content</Heading>\n\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non. Orci varius natoque\n                penatibus et magnis dis parturient\n                montes, nascetur ridiculus mus.\n            </Text>\n        </Accordion.Section>\n    </Accordion.Group>\n\n    <Accordion.Group logic_id=\"accordion-palette-dark\">\n        <Accordion.Label palette=\"dark\">\n            DARK Section\n        </Accordion.Label>\n\n        <Accordion.Section>\n            <Heading>DARK Content</Heading>\n\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non. Orci varius natoque\n                penatibus et magnis dis parturient\n                montes, nascetur ridiculus mus.\n            </Text>\n        </Accordion.Section>\n    </Accordion.Group>\n\n    <Accordion.Group\n        logic_id=\"accordion-palette-light\"\n    >\n        <Accordion.Label palette=\"light\">\n            LIGHT Section\n        </Accordion.Label>\n\n        <Accordion.Section>\n            <Heading>LIGHT Content</Heading>\n\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non. Orci varius natoque\n                penatibus et magnis dis parturient\n                montes, nascetur ridiculus mus.\n            </Text>\n        </Accordion.Section>\n    </Accordion.Group>\n\n    <Accordion.Group\n        logic_id=\"accordion-palette-alert\"\n    >\n        <Accordion.Label palette=\"alert\">\n            ALERT Section\n        </Accordion.Label>\n\n        <Accordion.Section>\n            <Heading>ALERT Content</Heading>\n\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non. Orci varius natoque\n                penatibus et magnis dis parturient\n                montes, nascetur ridiculus mus.\n            </Text>\n        </Accordion.Section>\n    </Accordion.Group>\n\n    <Accordion.Group\n        logic_id=\"accordion-palette-affirmative\"\n    >\n        <Accordion.Label palette=\"affirmative\">\n            AFFIRMATIVE Section\n        </Accordion.Label>\n\n        <Accordion.Section>\n            <Heading>AFFIRMATIVE Content</Heading>\n\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non. Orci varius natoque\n                penatibus et magnis dis parturient\n                montes, nascetur ridiculus mus.\n            </Text>\n        </Accordion.Section>\n    </Accordion.Group>\n\n    <Accordion.Group\n        logic_id=\"accordion-palette-informative\"\n    >\n        <Accordion.Label palette=\"informative\">\n            INFORMATIVE Section\n        </Accordion.Label>\n\n        <Accordion.Section>\n            <Heading>INFORMATIVE Content</Heading>\n\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non. Orci varius natoque\n                penatibus et magnis dis parturient\n                montes, nascetur ridiculus mus.\n            </Text>\n        </Accordion.Section>\n    </Accordion.Group>\n\n    <Accordion.Group\n        logic_id=\"accordion-palette-negative\"\n    >\n        <Accordion.Label palette=\"negative\">\n            NEGATIVE Section\n        </Accordion.Label>\n\n        <Accordion.Section>\n            <Heading>NEGATIVE Content</Heading>\n\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non. Orci varius natoque\n                penatibus et magnis dis parturient\n                montes, nascetur ridiculus mus.\n            </Text>\n        </Accordion.Section>\n    </Accordion.Group>\n</Accordion.Container>"},{"identifier":"/playground?snippet=accordion-preview","title":"Accordion Preview","text":"<script>\n    import {\n        Accordion,\n        Heading,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Accordion.Container logic_name=\"accordion-preview\">\n    <Accordion.Group logic_id=\"accordion-preview-1\">\n        <Accordion.Label palette=\"accent\">\n            Section One\n        </Accordion.Label>\n\n        <Accordion.Section>\n            <Heading>Item One Content</Heading>\n\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non. Orci varius natoque\n                penatibus et magnis dis parturient\n                montes, nascetur ridiculus mus.\n            </Text>\n        </Accordion.Section>\n    </Accordion.Group>\n\n    <Accordion.Group logic_id=\"accordion-preview-2\">\n        <Accordion.Label palette=\"accent\">\n            Section Two\n        </Accordion.Label>\n\n        <Accordion.Section>\n            <Heading>Item Two Content</Heading>\n\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non. Orci varius natoque\n                penatibus et magnis dis parturient\n                montes, nascetur ridiculus mus.\n            </Text>\n        </Accordion.Section>\n    </Accordion.Group>\n\n    <Accordion.Group logic_id=\"accordion-preview-3\">\n        <Accordion.Label palette=\"accent\">\n            Section Three\n        </Accordion.Label>\n\n        <Accordion.Section>\n            <Heading>Item Three Content</Heading>\n\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non. Orci varius natoque\n                penatibus et magnis dis parturient\n                montes, nascetur ridiculus mus.\n            </Text>\n        </Accordion.Section>\n    </Accordion.Group>\n</Accordion.Container>"},{"identifier":"/playground?snippet=accordion-slot","title":"Accordion Slot","text":"<script>\n    import {\n        Accordion,\n        Heading,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Accordion.Container logic_name=\"accordion-slot\">\n    <Accordion.Group logic_id=\"accordion-slot-1\">\n        <Accordion.Label palette=\"accent\">\n            Section One\n\n            <svelte:fragment slot=\"close\">\n                <Text is=\"span\">-</Text>\n            </svelte:fragment>\n\n            <svelte:fragment slot=\"open\">\n                <Text is=\"span\">+</Text>\n            </svelte:fragment>\n        </Accordion.Label>\n\n        <Accordion.Section>\n            <Heading>Item One Content</Heading>\n\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non. Orci varius natoque\n                penatibus et magnis dis parturient\n                montes, nascetur ridiculus mus.\n            </Text>\n        </Accordion.Section>\n    </Accordion.Group>\n\n    <Accordion.Group logic_id=\"accordion-slot-2\">\n        <Accordion.Label palette=\"accent\">\n            Section Two\n\n            <svelte:fragment slot=\"close\">\n                <Text is=\"span\">-</Text>\n            </svelte:fragment>\n\n            <svelte:fragment slot=\"open\">\n                <Text is=\"span\">+</Text>\n            </svelte:fragment>\n        </Accordion.Label>\n\n        <Accordion.Section>\n            <Heading>Item Two Content</Heading>\n\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non. Orci varius natoque\n                penatibus et magnis dis parturient\n                montes, nascetur ridiculus mus.\n            </Text>\n        </Accordion.Section>\n    </Accordion.Group>\n\n    <Accordion.Group logic_id=\"accordion-slot-3\">\n        <Accordion.Label palette=\"accent\">\n            Section Three\n\n            <svelte:fragment slot=\"close\">\n                <Text is=\"span\">-</Text>\n            </svelte:fragment>\n\n            <svelte:fragment slot=\"open\">\n                <Text is=\"span\">+</Text>\n            </svelte:fragment>\n        </Accordion.Label>\n\n        <Accordion.Section>\n            <Heading>Item Three Content</Heading>\n\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non. Orci varius natoque\n                penatibus et magnis dis parturient\n                montes, nascetur ridiculus mus.\n            </Text>\n        </Accordion.Section>\n    </Accordion.Group>\n</Accordion.Container>"},{"identifier":"/playground?snippet=accordion-transitions","title":"Accordion Transitions","text":"<script>\n    import {\n        Accordion,\n        Heading,\n        Text,\n        Transition,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Accordion.Container\n    logic_name=\"accordion-transitions\"\n>\n    <Accordion.Group\n        logic_id=\"accordion-transitions-1\"\n    >\n        <Accordion.Label palette=\"accent\">\n            Section One\n        </Accordion.Label>\n\n        <Accordion.Section>\n            <Transition\n                animation=\"fade\"\n                variation=\"enter\"\n            >\n                <Heading>Item One Content</Heading>\n\n                <Text>\n                    Lorem ipsum dolor sit amet,\n                    consectetur adipiscing elit. Proin\n                    et consectetur orci. Curabitur a\n                    egestas turpis, vitae convallis\n                    sapien. Sed pellentesque rutrum\n                    tellus, in iaculis dolor tincidunt\n                    non. Orci varius natoque penatibus\n                    et magnis dis parturient montes,\n                    nascetur ridiculus mus.\n                </Text>\n            </Transition>\n        </Accordion.Section>\n    </Accordion.Group>\n\n    <Accordion.Group\n        logic_id=\"accordion-transitions-2\"\n    >\n        <Accordion.Label palette=\"accent\">\n            Section Two\n        </Accordion.Label>\n\n        <Accordion.Section>\n            <Transition\n                animation=\"fade\"\n                variation=\"enter\"\n            >\n                <Heading>Item Two Content</Heading>\n\n                <Text>\n                    Lorem ipsum dolor sit amet,\n                    consectetur adipiscing elit. Proin\n                    et consectetur orci. Curabitur a\n                    egestas turpis, vitae convallis\n                    sapien. Sed pellentesque rutrum\n                    tellus, in iaculis dolor tincidunt\n                    non. Orci varius natoque penatibus\n                    et magnis dis parturient montes,\n                    nascetur ridiculus mus.\n                </Text>\n            </Transition>\n        </Accordion.Section>\n    </Accordion.Group>\n\n    <Accordion.Group\n        logic_id=\"accordion-transitions-3\"\n    >\n        <Accordion.Label palette=\"accent\">\n            Section Three\n        </Accordion.Label>\n\n        <Accordion.Section>\n            <Transition\n                animation=\"fade\"\n                variation=\"enter\"\n            >\n                <Heading>Item Three Content</Heading>\n\n                <Text>\n                    Lorem ipsum dolor sit amet,\n                    consectetur adipiscing elit. Proin\n                    et consectetur orci. Curabitur a\n                    egestas turpis, vitae convallis\n                    sapien. Sed pellentesque rutrum\n                    tellus, in iaculis dolor tincidunt\n                    non. Orci varius natoque penatibus\n                    et magnis dis parturient montes,\n                    nascetur ridiculus mus.\n                </Text>\n            </Transition>\n        </Accordion.Section>\n    </Accordion.Group>\n</Accordion.Container>"},{"identifier":"/playground?snippet=actions-preview","title":"Actions Preview","text":"<script>\n    import {\n        Box,\n        click_outside,\n    } from \"@kahi-ui/framework\";\n\n    let clicked = false;\n</script>\n\n<Box\n    palette={clicked ? \"affirmative\" : \"negative\"}\n    padding=\"small\"\n    actions={[\n        [\n            click_outside,\n            {on_click_outside: () => (clicked = false)},\n        ],\n    ]}\n    on:click={() => (clicked = true)}\n>\n    {clicked\n        ? \"I was clicked inside!\"\n        : \"I am currently not clicked...\"}\n</Box>"},{"identifier":"/playground?snippet=anchor-external-navigation","title":"Anchor External Navigation","text":"<script>\n    import {Anchor} from \"@kahi-ui/framework\";\n</script>\n\n<Anchor\n    href=\"https://google.com\"\n    target=\"_blank\"\n    rel=\"noopener noreferrer\"\n>\n    Goto google.com\n</Anchor>"},{"identifier":"/playground?snippet=anchor-internal-navigation","title":"Anchor Internal Navigation","text":"<script>\n    import {Anchor} from \"@kahi-ui/framework\";\n</script>\n\n<Anchor href=\"#\">Kahi UI</Anchor>"},{"identifier":"/playground?snippet=anchor-palette","title":"Anchor Palette","text":"<script>\n    import {Anchor, Stack} from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <Anchor\n        href=\"https://google.com\"\n        target=\"_blank\"\n        rel=\"noopener noreferrer\"\n    >\n        Goto google.com DEFAULT\n    </Anchor>\n\n    <Anchor\n        href=\"https://google.com\"\n        target=\"_blank\"\n        rel=\"noopener noreferrer\"\n        palette=\"accent\"\n    >\n        Goto google.com ACCENT\n    </Anchor>\n\n    <Anchor\n        href=\"https://google.com\"\n        target=\"_blank\"\n        rel=\"noopener noreferrer\"\n        palette=\"neutral\"\n    >\n        Goto google.com NEUTRAL\n    </Anchor>\n\n    <Anchor\n        href=\"https://google.com\"\n        target=\"_blank\"\n        rel=\"noopener noreferrer\"\n        palette=\"dark\"\n    >\n        Goto google.com DARK\n    </Anchor>\n\n    <Anchor\n        href=\"https://google.com\"\n        target=\"_blank\"\n        rel=\"noopener noreferrer\"\n        palette=\"light\"\n    >\n        Goto google.com LIGHT\n    </Anchor>\n\n    <Anchor\n        href=\"https://google.com\"\n        target=\"_blank\"\n        rel=\"noopener noreferrer\"\n        palette=\"alert\"\n    >\n        Goto google.com ALERT\n    </Anchor>\n\n    <Anchor\n        href=\"https://google.com\"\n        target=\"_blank\"\n        rel=\"noopener noreferrer\"\n        palette=\"affirmative\"\n    >\n        Goto google.com AFFIRMATIVE\n    </Anchor>\n\n    <Anchor\n        href=\"https://google.com\"\n        target=\"_blank\"\n        rel=\"noopener noreferrer\"\n        palette=\"informative\"\n    >\n        Goto google.com INFORMATIVE\n    </Anchor>\n\n    <Anchor\n        href=\"https://google.com\"\n        target=\"_blank\"\n        rel=\"noopener noreferrer\"\n        palette=\"negative\"\n    >\n        Goto google.com NEGATIVE\n    </Anchor>\n</Stack.Container>"},{"identifier":"/playground?snippet=anchor-preview","title":"Anchor Preview","text":"<script>\n    import {Anchor} from \"@kahi-ui/framework\";\n</script>\n\n<Anchor\n    href=\"https://google.com\"\n    target=\"_blank\"\n    rel=\"noopener noreferrer\"\n>\n    Goto google.com\n</Anchor>"},{"identifier":"/playground?snippet=anchor-states","title":"Anchor States","text":"<script>\n    import {Anchor} from \"@kahi-ui/framework\";\n</script>\n\n<Anchor\n    href=\"https://google.com\"\n    target=\"_blank\"\n    rel=\"noopener noreferrer\"\n>\n    Goto google.com DEFAULT\n</Anchor>\n\n<Anchor\n    href=\"https://google.com\"\n    target=\"_blank\"\n    rel=\"noopener noreferrer\"\n    disabled\n>\n    Goto google.com DISABLED\n</Anchor>"},{"identifier":"/playground?snippet=animation-bounce","title":"Animation Bounce","text":"<script>\n    import {Animation, Dot} from \"@kahi-ui/framework\";\n</script>\n\n<Animation animation=\"bounce\">\n    <Dot palette=\"accent\" />\n</Animation>"},{"identifier":"/playground?snippet=animation-delay","title":"Animation Delay","text":"<script>\n    import {Animation, Dot} from \"@kahi-ui/framework\";\n</script>\n\n<Animation animation=\"bounce\">\n    <Dot palette=\"accent\" />\n</Animation>\n\n<Animation animation=\"bounce\" delay={-0.75}>\n    <Dot palette=\"accent\" />\n</Animation>\n\n<Animation animation=\"bounce\" delay={-0.5}>\n    <Dot palette=\"accent\" />\n</Animation>\n\n<Animation animation=\"bounce\" delay={-0.25}>\n    <Dot palette=\"accent\" />\n</Animation>"},{"identifier":"/playground?snippet=animation-duration","title":"Animation Duration","text":"<script>\n    import {Animation, Dot} from \"@kahi-ui/framework\";\n</script>\n\n<Animation animation=\"bounce\" duration={0.25}>\n    <Dot palette=\"accent\" />\n</Animation>\n\n<Animation animation=\"bounce\">\n    <Dot palette=\"accent\" />\n</Animation>\n\n<Animation animation=\"bounce\" duration={1.75}>\n    <Dot palette=\"accent\" />\n</Animation>\n\n<Animation animation=\"bounce\" duration={2.5}>\n    <Dot palette=\"accent\" />\n</Animation>"},{"identifier":"/playground?snippet=animation-elements","title":"Animation Elements","text":"<script>\n    import {\n        Animation,\n        Box,\n        Button,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    spacing=\"medium\"\n    orientation=\"horizontal\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">DIV / BLOCK</Text>\n\n        <Animation is=\"div\" animation=\"bounce\">\n            <Box palette=\"inverse\" padding=\"medium\">\n                I booouunce, I bounce so far\n                awaaaaaay~!\n            </Box>\n        </Animation>\n    </div>\n\n    <div>\n        <Text is=\"strong\">SPAN / INLINE</Text>\n\n        <Animation is=\"span\" animation=\"bounce\">\n            <Box palette=\"inverse\" padding=\"medium\">\n                I booouunce, I bounce so far\n                awaaaaaay~!\n            </Box>\n        </Animation>\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=animation-iterations","title":"Animation Iterations","text":"<script>\n    import {\n        Animation,\n        Dot,\n        NumberInput,\n    } from \"@kahi-ui/framework\";\n\n    let iterations = 0;\n</script>\n\n<NumberInput bind:value={iterations} />\n\n<!--\n    NOTE: CSS keeps the current iteration count if you only change\n    the `animation-iteration-count` property. So we're using `{#key}`\n    here to reset the internal counter\n-->\n\n{#key iterations}\n    <Animation animation=\"bounce\" {iterations}>\n        <Dot palette=\"accent\" />\n    </Animation>\n{/key}"},{"identifier":"/playground?snippet=animation-ping","title":"Animation Ping","text":"<script>\n    import {Animation, Dot} from \"@kahi-ui/framework\";\n</script>\n\n<Animation animation=\"ping\">\n    <Dot palette=\"accent\" />\n</Animation>"},{"identifier":"/playground?snippet=animation-preview","title":"Animation Preview","text":"<script>\n    import {\n        Animation,\n        Button,\n        Dot,\n        Position,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Button palette=\"accent\">\n    Inbox\n    <Position variation=\"indicator\">\n        <Animation animation=\"ping\">\n            <Dot palette=\"negative\" />\n        </Animation>\n    </Position>\n</Button>"},{"identifier":"/playground?snippet=animation-pulse","title":"Animation Pulse","text":"<script>\n    import {Animation, Dot} from \"@kahi-ui/framework\";\n</script>\n\n<Animation animation=\"pulse\">\n    <Dot palette=\"accent\" />\n</Animation>"},{"identifier":"/playground?snippet=animation-variation","title":"Animation Variation","text":"<script>\n    import {\n        Animation,\n        Button,\n        Dot,\n    } from \"@kahi-ui/framework\";\n\n    let variation = undefined;\n</script>\n\n<Button\n    on:click={() =>\n        (variation =\n            variation === \"pause\" ? \"play\" : \"pause\")}\n>\n    Toggle Variation\n</Button>\n\n<Animation animation=\"bounce\" {variation}>\n    <Dot palette=\"accent\" />\n</Animation>"},{"identifier":"/playground?snippet=article-anchor","title":"Article Anchor","text":"<script>\n    import {Article} from \"@kahi-ui/framework\";\n</script>\n\n<Article>\n    <a href=\"https://google.com\">Goto google.com</a>\n\n    <p>\n        This has nested <a href=\"#\">anchor tags</a>!\n    </p>\n\n    <blockquote>\n        <p>\n            This has nested <a href=\"#\">anchor tags</a\n            >!\n        </p>\n    </blockquote>\n\n    <ul>\n        <li>\n            This has nested <a href=\"#\">anchor tags</a\n            >!\n        </li>\n    </ul>\n</Article>"},{"identifier":"/playground?snippet=article-blockquote","title":"Article Blockquote","text":"<script>\n    import {Article} from \"@kahi-ui/framework\";\n</script>\n\n<Article\n    max_width=\"prose\"\n    margin_x=\"auto\"\n    margin_y=\"medium\"\n>\n    <blockquote>\n        <p>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Mauris porta, urna vel\n            tristique varius, ipsum erat auctor odio,\n            id imperdiet mauris velit eget quam. Donec\n            viverra urna eu ligula eleifend, sed\n            molestie lectus convallis. Nullam gravida\n            placerat ex, sodales porttitor nibh.\n            Suspendisse vitae nisi euismod, venenatis\n            dui eu, hendrerit risus. Maecenas at\n            hendrerit odio, at dictum nulla. Morbi\n            tristique, augue vel blandit bibendum,\n            mauris nibh finibus justo, ut mollis magna\n            neque in lectus. Sed dignissim, enim sit\n            amet lobortis tincidunt, nibh risus\n            elementum urna, vel tincidunt nisi elit vel\n            tortor. Curabitur iaculis nulla nec odio\n            efficitur, sit amet auctor odio mattis.\n            Aenean quam arcu, feugiat non turpis eget,\n            aliquet vestibulum lacus.\n        </p>\n\n        <p>\n            Praesent lacinia elit et risus molestie\n            pretium. Aenean semper mauris ut erat\n            ornare lobortis. Integer sollicitudin\n            bibendum rhoncus. Nulla nisi orci, maximus\n            elementum libero ut, tristique scelerisque\n            sapien. Aenean ultricies dui quis finibus\n            pretium. Nunc tellus neque, cursus et\n            egestas vel, elementum sit amet lacus.\n            Aenean ac euismod nunc, id molestie eros.\n        </p>\n\n        <cite>— Lorem Ipsum</cite>\n    </blockquote>\n</Article>"},{"identifier":"/playground?snippet=article-code","title":"Article Code","text":"<script>\n    import {Article} from \"@kahi-ui/framework\";\n</script>\n\n\n<Article>\n    <code>import * as Kahi from \"@kahi-ui/framework\";</code>\n\n    <br />\n    <br />\n\n    <pre>import math from \"a-math-library\";\n\nconst result = math.add(1, 1);\nconsole.log(\"Our value is:\", result);</pre>\n\n    <code>import * as Kahi from \"@kahi-ui/framework\";</code>\n\n            <p>\n            This has nested <code>code tags</code>!\n        </p>\n\n        <blockquote>\n            <p>\n                This has nested <code>code tags</code>!\n            </p>\n        </blockquote>\n\n        <ul>\n            <li>\n                This has nested <code>code tags</code>!\n            </li>\n        </ul>\n</Article>"},{"identifier":"/playground?snippet=article-divider","title":"Article Divider","text":"<script>\n    import {Article} from \"@kahi-ui/framework\";\n</script>\n\n<Article>\n    <hr />\n</Article>"},{"identifier":"/playground?snippet=article-elements","title":"Article Elements","text":"<script>\n    import {\n        Article,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container spacing=\"medium\">\n    <Article is=\"article\">\n        <h1>ARTICLE</h1>\n    </Article>\n\n    <Article is=\"div\">\n        <h1>DIV</h1>\n    </Article>\n\n    <Article is=\"main\">\n        <h1>MAIN</h1>\n    </Article>\n</Stack.Container>"},{"identifier":"/playground?snippet=article-heading","title":"Article Heading","text":"<script>\n    import {Article} from \"@kahi-ui/framework\";\n</script>\n\n<Article>\n    <h1>Heading 1</h1>\n    <h2>Heading 2</h2>\n    <h3>Heading 3</h3>\n    <h4>Heading 4</h4>\n    <h5>Heading 5</h5>\n    <h6>Heading 6</h6>\n</Article>"},{"identifier":"/playground?snippet=article-list","title":"Article List","text":"<script>\n    import {Article} from \"@kahi-ui/framework\";\n</script>\n\n<Article>\n    <ol>\n        <li>List Item #1</li>\n        <li>List Item #2</li>\n        <li>List Item #3</li>\n    </ol>\n\n    <ul>\n        <li>List Item #1</li>\n        <li>List Item #2</li>\n        <li>List Item #3</li>\n    </ul>\n</Article>"},{"identifier":"/playground?snippet=article-paragraph","title":"Article Paragraph","text":"<script>\n    import {Article} from \"@kahi-ui/framework\";\n</script>\n\n<Article>\n    <p>\n        Lorem ipsum dolor sit amet, consectetur\n        adipiscing elit. Mauris porta, urna vel\n        tristique varius, ipsum erat auctor odio, id\n        imperdiet mauris velit eget quam. Donec viverra\n        urna eu ligula eleifend, sed molestie lectus\n        convallis. Nullam gravida placerat ex, sodales\n        porttitor nibh. Suspendisse vitae nisi euismod,\n        venenatis dui eu, hendrerit risus. Maecenas at\n        hendrerit odio, at dictum nulla. Morbi\n        tristique, augue vel blandit bibendum, mauris\n        nibh finibus justo, ut mollis magna neque in\n        lectus. Sed dignissim, enim sit amet lobortis\n        tincidunt, nibh risus elementum urna, vel\n        tincidunt nisi elit vel tortor. Curabitur\n        iaculis nulla nec odio efficitur, sit amet\n        auctor odio mattis. Aenean quam arcu, feugiat\n        non turpis eget, aliquet vestibulum lacus.\n    </p>\n\n    <p>\n        Praesent lacinia elit et risus molestie\n        pretium. Aenean semper mauris ut erat ornare\n        lobortis. Integer sollicitudin bibendum\n        rhoncus. Nulla nisi orci, maximus elementum\n        libero ut, tristique scelerisque sapien. Aenean\n        ultricies dui quis finibus pretium. Nunc tellus\n        neque, cursus et egestas vel, elementum sit\n        amet lacus. Aenean ac euismod nunc, id molestie\n        eros.\n    </p>\n</Article>"},{"identifier":"/playground?snippet=article-small","title":"Article Small","text":"<script>\n    import {Article} from \"@kahi-ui/framework\";\n</script>\n\n<Article>\n    <small>I am small text!</small>\n</Article>"},{"identifier":"/playground?snippet=article-table","title":"Article Table","text":"<script>\n    import {\n        Article,\n        Scrollable,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Article>\n    <table>\n        <thead>\n            <tr>\n                <th />\n                <th>Minimum</th>\n                <th>Maximum</th>\n            </tr>\n        </thead>\n\n        <tbody>\n            <tr>\n                <td>\n                    <strong>mobile</strong>\n                </td>\n\n                <td>\n                    <code>0px</code>\n                </td>\n\n                <td>\n                    <code>640px</code>\n                </td>\n            </tr>\n\n            <tr>\n                <td>\n                    <strong>tablet</strong>\n                </td>\n\n                <td>\n                    <code>641px</code>\n                </td>\n\n                <td>\n                    <code>768px</code>\n                </td>\n            </tr>\n\n            <tr>\n                <td>\n                    <strong>desktop</strong>\n                </td>\n\n                <td>\n                    <code>769px</code>\n                </td>\n\n                <td>\n                    <code>1024px</code>\n                </td>\n            </tr>\n\n            <tr>\n                <td>\n                    <strong>widescreen</strong>\n                </td>\n\n                <td>\n                    <code>1025px</code>\n                </td>\n\n                <td><code>∞</code></td>\n            </tr>\n        </tbody>\n\n        <tfoot>\n            <tr>\n                <th />\n                <th>Minimum</th>\n                <th>Maximum</th>\n            </tr>\n        </tfoot>\n    </table>\n\n    <table data-variation=\"borders stripes\">\n        <thead>\n            <tr>\n                <th />\n                <th>Minimum</th>\n                <th>Maximum</th>\n            </tr>\n        </thead>\n\n        <tbody>\n            <tr>\n                <td>\n                    <strong>mobile</strong>\n                </td>\n\n                <td>\n                    <code>0px</code>\n                </td>\n\n                <td>\n                    <code>640px</code>\n                </td>\n            </tr>\n\n            <tr>\n                <td>\n                    <strong>tablet</strong>\n                </td>\n\n                <td>\n                    <code>641px</code>\n                </td>\n\n                <td>\n                    <code>768px</code>\n                </td>\n            </tr>\n\n            <tr>\n                <td>\n                    <strong>desktop</strong>\n                </td>\n\n                <td>\n                    <code>769px</code>\n                </td>\n\n                <td>\n                    <code>1024px</code>\n                </td>\n            </tr>\n\n            <tr>\n                <td>\n                    <strong>widescreen</strong>\n                </td>\n\n                <td>\n                    <code>1025px</code>\n                </td>\n\n                <td><code>∞</code></td>\n            </tr>\n        </tbody>\n\n        <tfoot>\n            <tr>\n                <th />\n                <th>Minimum</th>\n                <th>Maximum</th>\n            </tr>\n        </tfoot>\n    </table>\n\n    <Scrollable width=\"medium\">\n        <table>\n            <thead>\n                <tr>\n                    <th />\n                    <th>Minimum</th>\n                    <th>Maximum</th>\n                </tr>\n            </thead>\n\n            <tbody>\n                <tr>\n                    <td>\n                        <strong>mobile</strong>\n                    </td>\n\n                    <td>\n                        <code>0px</code>\n                    </td>\n\n                    <td>\n                        <code>640px</code>\n                    </td>\n                </tr>\n\n                <tr>\n                    <td>\n                        <strong>tablet</strong>\n                    </td>\n\n                    <td>\n                        <code>641px</code>\n                    </td>\n\n                    <td>\n                        <code>768px</code>\n                    </td>\n                </tr>\n\n                <tr>\n                    <td>\n                        <strong>desktop</strong>\n                    </td>\n\n                    <td>\n                        <code>769px</code>\n                    </td>\n\n                    <td>\n                        <code>1024px</code>\n                    </td>\n                </tr>\n\n                <tr>\n                    <td>\n                        <strong>widescreen</strong>\n                    </td>\n\n                    <td>\n                        <code>1025px</code>\n                    </td>\n\n                    <td><code>∞</code></td>\n                </tr>\n            </tbody>\n\n            <tfoot>\n                <tr>\n                    <th />\n                    <th>Minimum</th>\n                    <th>Maximum</th>\n                </tr>\n            </tfoot>\n        </table>\n    </Scrollable>\n\n    <Scrollable width=\"medium\">\n        <table data-variation=\"borders stripes\">\n            <thead>\n                <tr>\n                    <th />\n                    <th>Minimum</th>\n                    <th>Maximum</th>\n                </tr>\n            </thead>\n\n            <tbody>\n                <tr>\n                    <td>\n                        <strong>mobile</strong>\n                    </td>\n\n                    <td>\n                        <code>0px</code>\n                    </td>\n\n                    <td>\n                        <code>640px</code>\n                    </td>\n                </tr>\n\n                <tr>\n                    <td>\n                        <strong>tablet</strong>\n                    </td>\n\n                    <td>\n                        <code>641px</code>\n                    </td>\n\n                    <td>\n                        <code>768px</code>\n                    </td>\n                </tr>\n\n                <tr>\n                    <td>\n                        <strong>desktop</strong>\n                    </td>\n\n                    <td>\n                        <code>769px</code>\n                    </td>\n\n                    <td>\n                        <code>1024px</code>\n                    </td>\n                </tr>\n\n                <tr>\n                    <td>\n                        <strong>widescreen</strong>\n                    </td>\n\n                    <td>\n                        <code>1025px</code>\n                    </td>\n\n                    <td><code>∞</code></td>\n                </tr>\n            </tbody>\n\n            <tfoot>\n                <tr>\n                    <th />\n                    <th>Minimum</th>\n                    <th>Maximum</th>\n                </tr>\n            </tfoot>\n        </table>\n    </Scrollable>\n</Article>"},{"identifier":"/playground?snippet=aside-collapsing","title":"Aside Collapsing","text":"<script>\n    import {\n        Anchor,\n        Aside,\n        Button,\n        Divider,\n        Menu,\n        Position,\n        Overlay,\n        Spacer,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Position\n    variation=\"action\"\n    alignment_x=\"left\"\n    hidden={[\"desktop\", \"widescreen\"]}\n>\n    <Button is=\"label\" for=\"aside-collapsing\">\n        +\n    </Button>\n</Position>\n\n<Overlay.Container\n    logic_id=\"aside-collapsing\"\n    dismissible\n>\n    <Overlay.Backdrop\n        hidden={[\"desktop\", \"widescreen\"]}\n    />\n\n    <Overlay.Section\n        contents={[\"desktop\", \"widescreen\"]}\n        animation=\"slide\"\n        direction=\"left\"\n        alignment_x=\"left\"\n    >\n        <Aside.Container\n            palette=\"inverse\"\n            max_width=\"content-max\"\n            height=\"100\"\n        >\n            <Aside.Header>\n                <Anchor href=\"#\">Kahi UI</Anchor>\n                <Divider />\n            </Aside.Header>\n\n            <Aside.Section>\n                <Menu.Container>\n                    <Menu.Heading>\n                        DISPLAY\n                    </Menu.Heading>\n\n                    <Menu.Button>\n                        Badge\n                        <Spacer />\n                        <span>ICON</span>\n                    </Menu.Button>\n\n                    <Menu.Heading>\n                        FEEDBACK\n                    </Menu.Heading>\n\n                    <Menu.Button>\n                        Dot\n                        <Spacer />\n                        <span>ICON</span>\n                    </Menu.Button>\n\n                    <Menu.Button active>\n                        Spinner\n                        <Spacer />\n                        <span>ICON</span>\n                    </Menu.Button>\n                </Menu.Container>\n            </Aside.Section>\n\n            <Aside.Footer>\n                <Anchor href=\"#\">\n                    <Text is=\"small\">v0.6.0</Text>\n                </Anchor>\n            </Aside.Footer>\n\n            <Position\n                variation={[\"container\", \"action\"]}\n                hidden={[\"desktop\", \"widescreen\"]}\n            >\n                <Overlay.Button variation=\"clear\">\n                    -\n                </Overlay.Button>\n            </Position>\n        </Aside.Container>\n    </Overlay.Section>\n</Overlay.Container>"},{"identifier":"/playground?snippet=aside-palette","title":"Aside Palette","text":"<script>\n    import {\n        Anchor,\n        Aside,\n        Divider,\n        Menu,\n        Mosaic,\n        Spacer,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Mosaic.Container sizing=\"medium\" spacing=\"medium\">\n    <Aside.Container>\n        <Aside.Header>\n            <Anchor href=\"#\">Kahi UI</Anchor>\n            <Divider />\n        </Aside.Header>\n\n        <Aside.Section>\n            <Menu.Container>\n                <Menu.Heading>FEEDBACK</Menu.Heading>\n\n                <Menu.Button>\n                    Dot\n                    <Spacer />\n                    <span>ICON</span>\n                </Menu.Button>\n\n                <Menu.Button active>\n                    Spinner\n                    <Spacer />\n                    <span>ICON</span>\n                </Menu.Button>\n            </Menu.Container>\n        </Aside.Section>\n\n        <Aside.Footer>DEFAULT</Aside.Footer>\n    </Aside.Container>\n\n    <Aside.Container palette=\"accent\">\n        <Aside.Header>\n            <Anchor href=\"#\">Kahi UI</Anchor>\n            <Divider />\n        </Aside.Header>\n\n        <Aside.Section>\n            <Menu.Container>\n                <Menu.Heading>FEEDBACK</Menu.Heading>\n\n                <Menu.Button>\n                    Dot\n                    <Spacer />\n                    <span>ICON</span>\n                </Menu.Button>\n\n                <Menu.Button active>\n                    Spinner\n                    <Spacer />\n                    <span>ICON</span>\n                </Menu.Button>\n            </Menu.Container>\n        </Aside.Section>\n\n        <Aside.Footer>ACCENT</Aside.Footer>\n    </Aside.Container>\n\n    <Aside.Container palette=\"neutral\">\n        <Aside.Header>\n            <Anchor href=\"#\">Kahi UI</Anchor>\n            <Divider />\n        </Aside.Header>\n\n        <Aside.Section>\n            <Menu.Container>\n                <Menu.Heading>FEEDBACK</Menu.Heading>\n\n                <Menu.Button>\n                    Dot\n                    <Spacer />\n                    <span>ICON</span>\n                </Menu.Button>\n\n                <Menu.Button active>\n                    Spinner\n                    <Spacer />\n                    <span>ICON</span>\n                </Menu.Button>\n            </Menu.Container>\n        </Aside.Section>\n\n        <Aside.Footer>NEUTRAL</Aside.Footer>\n    </Aside.Container>\n\n    <Aside.Container palette=\"dark\">\n        <Aside.Header>\n            <Anchor href=\"#\">Kahi UI</Anchor>\n            <Divider />\n        </Aside.Header>\n\n        <Aside.Section>\n            <Menu.Container>\n                <Menu.Heading>FEEDBACK</Menu.Heading>\n\n                <Menu.Button>\n                    Dot\n                    <Spacer />\n                    <span>ICON</span>\n                </Menu.Button>\n\n                <Menu.Button active>\n                    Spinner\n                    <Spacer />\n                    <span>ICON</span>\n                </Menu.Button>\n            </Menu.Container>\n        </Aside.Section>\n\n        <Aside.Footer>DARK</Aside.Footer>\n    </Aside.Container>\n\n    <Aside.Container palette=\"light\">\n        <Aside.Header>\n            <Anchor href=\"#\">Kahi UI</Anchor>\n            <Divider />\n        </Aside.Header>\n\n        <Aside.Section>\n            <Menu.Container>\n                <Menu.Heading>FEEDBACK</Menu.Heading>\n\n                <Menu.Button>\n                    Dot\n                    <Spacer />\n                    <span>ICON</span>\n                </Menu.Button>\n\n                <Menu.Button active>\n                    Spinner\n                    <Spacer />\n                    <span>ICON</span>\n                </Menu.Button>\n            </Menu.Container>\n        </Aside.Section>\n\n        <Aside.Footer>LIGHT</Aside.Footer>\n    </Aside.Container>\n\n    <Aside.Container palette=\"alert\">\n        <Aside.Header>\n            <Anchor href=\"#\">Kahi UI</Anchor>\n            <Divider />\n        </Aside.Header>\n\n        <Aside.Section>\n            <Menu.Container>\n                <Menu.Heading>FEEDBACK</Menu.Heading>\n\n                <Menu.Button>\n                    Dot\n                    <Spacer />\n                    <span>ICON</span>\n                </Menu.Button>\n\n                <Menu.Button active>\n                    Spinner\n                    <Spacer />\n                    <span>ICON</span>\n                </Menu.Button>\n            </Menu.Container>\n        </Aside.Section>\n\n        <Aside.Footer>ALERT</Aside.Footer>\n    </Aside.Container>\n\n    <Aside.Container palette=\"affirmative\">\n        <Aside.Header>\n            <Anchor href=\"#\">Kahi UI</Anchor>\n            <Divider />\n        </Aside.Header>\n\n        <Aside.Section>\n            <Menu.Container>\n                <Menu.Heading>FEEDBACK</Menu.Heading>\n\n                <Menu.Button>\n                    Dot\n                    <Spacer />\n                    <span>ICON</span>\n                </Menu.Button>\n\n                <Menu.Button active>\n                    Spinner\n                    <Spacer />\n                    <span>ICON</span>\n                </Menu.Button>\n            </Menu.Container>\n        </Aside.Section>\n\n        <Aside.Footer>AFFIRMATIVE</Aside.Footer>\n    </Aside.Container>\n\n    <Aside.Container palette=\"informative\">\n        <Aside.Header>\n            <Anchor href=\"#\">Kahi UI</Anchor>\n            <Divider />\n        </Aside.Header>\n\n        <Aside.Section>\n            <Menu.Container>\n                <Menu.Heading>FEEDBACK</Menu.Heading>\n\n                <Menu.Button>\n                    Dot\n                    <Spacer />\n                    <span>ICON</span>\n                </Menu.Button>\n\n                <Menu.Button active>\n                    Spinner\n                    <Spacer />\n                    <span>ICON</span>\n                </Menu.Button>\n            </Menu.Container>\n        </Aside.Section>\n\n        <Aside.Footer>INFORMATIVE</Aside.Footer>\n    </Aside.Container>\n\n    <Aside.Container palette=\"negative\">\n        <Aside.Header>\n            <Anchor href=\"#\">Kahi UI</Anchor>\n            <Divider />\n        </Aside.Header>\n\n        <Aside.Section>\n            <Menu.Container>\n                <Menu.Heading>FEEDBACK</Menu.Heading>\n\n                <Menu.Button>\n                    Dot\n                    <Spacer />\n                    <span>ICON</span>\n                </Menu.Button>\n\n                <Menu.Button active>\n                    Spinner\n                    <Spacer />\n                    <span>ICON</span>\n                </Menu.Button>\n            </Menu.Container>\n        </Aside.Section>\n\n        <Aside.Footer>NEGATIVE</Aside.Footer>\n    </Aside.Container>\n</Mosaic.Container>"},{"identifier":"/playground?snippet=aside-placement","title":"Aside Placement","text":"<script>\n    import {\n        Anchor,\n        Aside,\n        Divider,\n        Menu,\n        Spacer,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Aside.Container\n    placement=\"right\"\n    palette=\"inverse\"\n    max_width=\"content-max\"\n    height=\"100\"\n>\n    <Aside.Header>\n        <Anchor href=\"#\">Kahi UI</Anchor>\n        <Divider />\n    </Aside.Header>\n\n    <Aside.Section>\n        <Menu.Container>\n            <Menu.Heading>FEEDBACK</Menu.Heading>\n\n            <Menu.Button>\n                Dot\n                <Spacer />\n                <span>ICON</span>\n            </Menu.Button>\n\n            <Menu.Button active>\n                Spinner\n                <Spacer />\n                <span>ICON</span>\n            </Menu.Button>\n        </Menu.Container>\n    </Aside.Section>\n\n    <Aside.Footer>\n        <Anchor href=\"#\">\n            <Text is=\"small\">v0.6.0</Text>\n        </Anchor>\n    </Aside.Footer>\n</Aside.Container>"},{"identifier":"/playground?snippet=aside-preview","title":"Aside Preview","text":"<script>\n    import {\n        Anchor,\n        Aside,\n        Divider,\n        Menu,\n        Spacer,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Aside.Container\n    palette=\"dark\"\n    max_width=\"content-max\"\n    height=\"100\"\n>\n    <Aside.Header>\n        <Anchor href=\"#\">Kahi UI</Anchor>\n        <Divider />\n    </Aside.Header>\n\n    <Aside.Section>\n        <Menu.Container>\n            <Menu.Heading>DISPLAY</Menu.Heading>\n\n            <Menu.Button>\n                Badge\n                <Spacer />\n                <span>ICON</span>\n            </Menu.Button>\n\n            <Menu.Heading>FEEDBACK</Menu.Heading>\n\n            <Menu.Button>\n                Dot\n                <Spacer />\n                <span>ICON</span>\n            </Menu.Button>\n\n            <Menu.Button active>\n                Spinner\n                <Spacer />\n                <span>ICON</span>\n            </Menu.Button>\n        </Menu.Container>\n    </Aside.Section>\n\n    <Aside.Footer>\n        <Anchor href=\"#\">\n            <Text is=\"small\">v0.6.0</Text>\n        </Anchor>\n    </Aside.Footer>\n</Aside.Container>"},{"identifier":"/playground?snippet=auto_focus-preview","title":"auto_focus Preview","text":"<script>\n    import {\n        Box,\n        Check,\n        TextInput,\n        auto_focus,\n    } from \"@kahi-ui/framework\";\n\n    let enabled = false;\n</script>\n\n<Box\n    palette={enabled ? \"affirmative\" : \"negative\"}\n    padding=\"small\"\n>\n    {enabled\n        ? \"unselect the checkbox to restore focus\"\n        : \"select the checkbox to auto focus input\"}\n</Box>\n\n<Check bind:state={enabled} />\n\n<div use:auto_focus={{enabled}}>\n    <TextInput\n        placeholder=\"this TextInput will be focused\"\n    />\n</div>"},{"identifier":"/playground?snippet=auto_focus-target","title":"auto_focus Target","text":"<script>\n    import {\n        Box,\n        Check,\n        TextInput,\n        auto_focus,\n    } from \"@kahi-ui/framework\";\n\n    let target_element;\n\n    let enabled = false;\n</script>\n\n<Box\n    palette={enabled ? \"affirmative\" : \"negative\"}\n    padding=\"small\"\n>\n    {enabled\n        ? \"unselect the checkbox to restore focus\"\n        : \"select the checkbox to auto focus input\"}\n</Box>\n\n<Check bind:state={enabled} />\n\n<div\n    use:auto_focus={{enabled, target: target_element}}\n>\n    <TextInput\n        placeholder=\"this TextInput will NOT focused\"\n    />\n\n    <TextInput\n        bind:element={target_element}\n        placeholder=\"this TextInput will be focused\"\n    />\n</div>"},{"identifier":"/playground?snippet=backdrop-palette","title":"Backdrop Palette","text":"<script>\n    import {\n        Backdrop,\n        Button,\n        Position,\n        Stack,\n    } from \"@kahi-ui/framework\";\n\n    let palette = undefined;\n</script>\n\nHello World!\n\n<Backdrop {palette} />\n\n<Position variation=\"action\" alignment_x=\"left\">\n    <Stack.Container\n        orientation=\"horizontal\"\n        alignment_x=\"left\"\n        spacing=\"small\"\n        variation=\"wrap\"\n        max_width=\"prose\"\n        margin_left=\"auto\"\n    >\n        <Button\n            palette=\"inverse\"\n            on:click={() => (palette = undefined)}\n        >\n            RESET\n        </Button>\n\n        <Button\n            palette=\"accent\"\n            on:click={() => (palette = \"accent\")}\n        >\n            ACCENT\n        </Button>\n\n        <Button\n            palette=\"neutral\"\n            on:click={() => (palette = \"neutral\")}\n        >\n            NEUTRAL\n        </Button>\n\n        <Button\n            palette=\"dark\"\n            on:click={() => (palette = \"dark\")}\n        >\n            DARK\n        </Button>\n\n        <Button\n            palette=\"light\"\n            on:click={() => (palette = \"light\")}\n        >\n            LIGHT\n        </Button>\n\n        <Button\n            palette=\"affirmative\"\n            on:click={() => (palette = \"affirmative\")}\n        >\n            AFFIRMATIVE\n        </Button>\n\n        <Button\n            palette=\"informative\"\n            on:click={() => (palette = \"informative\")}\n        >\n            INFORMATIVE\n        </Button>\n\n        <Button\n            palette=\"negative\"\n            on:click={() => (palette = \"negative\")}\n        >\n            NEGATIVE\n        </Button>\n    </Stack.Container>\n</Position>"},{"identifier":"/playground?snippet=backdrop-preview","title":"Backdrop Preview","text":"<script>\n    import {Backdrop} from \"@kahi-ui/framework\";\n</script>\n\nHello World!\n\n<Backdrop />"},{"identifier":"/playground?snippet=badge-palette","title":"Badge Palette","text":"<script>\n    import {Badge, Stack} from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    spacing=\"medium\"\n    orientation=\"horizontal\"\n    variation=\"wrap\"\n>\n    <Badge>This is a DEFAULT Badge</Badge>\n\n    <Badge palette=\"accent\">\n        This is a ACCENT Badge\n    </Badge>\n\n    <Badge palette=\"neutral\">\n        This is a NEUTRAL Badge\n    </Badge>\n\n    <Badge palette=\"dark\">This is a DARK Badge</Badge>\n\n    <Badge palette=\"light\">\n        This is a LIGHT Badge\n    </Badge>\n\n    <Badge palette=\"alert\">\n        This is a ALERT Badge\n    </Badge>\n\n    <Badge palette=\"affirmative\">\n        This is a AFFIRMATIVE Badge\n    </Badge>\n\n    <Badge palette=\"informative\">\n        This is a INFORMATIVE Badge\n    </Badge>\n\n    <Badge palette=\"negative\">\n        This is a NEGATIVE Badge\n    </Badge>\n</Stack.Container>"},{"identifier":"/playground?snippet=badge-preview","title":"Badge Preview","text":"<script>\n    import {Badge} from \"@kahi-ui/framework\";\n</script>\n\n<Badge>This is a Badge!</Badge>"},{"identifier":"/playground?snippet=badge-radius","title":"Badge Radius","text":"<script>\n    import {Badge, Stack} from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <Badge palette=\"inverse\">DEFAULT Badge</Badge>\n\n    <Badge palette=\"inverse\" radius=\"nano\">\n        NANO Badge\n    </Badge>\n\n    <Badge palette=\"inverse\" radius=\"tiny\">\n        TINY Badge\n    </Badge>\n\n    <Badge palette=\"inverse\" radius=\"small\">\n        SMALL Badge\n    </Badge>\n\n    <Badge palette=\"inverse\" radius=\"medium\">\n        MEDIUM Badge\n    </Badge>\n\n    <Badge palette=\"inverse\" radius=\"large\">\n        LARGE Badge\n    </Badge>\n\n    <Badge palette=\"inverse\" radius=\"huge\">\n        HUGE Badge\n    </Badge>\n\n    <Badge palette=\"inverse\" radius=\"massive\">\n        MASSIVE Badge\n    </Badge>\n</Stack.Container>"},{"identifier":"/playground?snippet=badge-shape","title":"Badge Shape","text":"<script>\n    import {Badge, Stack} from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <Badge palette=\"inverse\">DEFAULT Badge</Badge>\n\n    <Badge palette=\"inverse\" shape=\"circle\">\n        CIRCLE Badge\n    </Badge>\n\n    <Badge palette=\"inverse\" shape=\"pill\">\n        PILL Badge\n    </Badge>\n</Stack.Container>"},{"identifier":"/playground?snippet=blockquote-palette","title":"Blockquote Palette","text":"<script>\n    import {\n        Blockquote,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <Blockquote.Container max_width=\"prose\">\n        <Text margin_bottom=\"medium\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Mauris porta, urna vel\n            tristique varius, ipsum erat auctor odio,\n            id imperdiet mauris velit eget quam. Donec\n            viverra urna eu ligula eleifend, sed\n            molestie lectus convallis. Nullam gravida\n            placerat ex, sodales porttitor nibh.\n            Suspendisse vitae nisi euismod, venenatis\n            dui eu, hendrerit risus.\n        </Text>\n\n        <Blockquote.Cite>— DEFAULT</Blockquote.Cite>\n    </Blockquote.Container>\n\n    <Blockquote.Container\n        max_width=\"prose\"\n        palette=\"accent\"\n    >\n        <Text margin_bottom=\"medium\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Mauris porta, urna vel\n            tristique varius, ipsum erat auctor odio,\n            id imperdiet mauris velit eget quam. Donec\n            viverra urna eu ligula eleifend, sed\n            molestie lectus convallis. Nullam gravida\n            placerat ex, sodales porttitor nibh.\n            Suspendisse vitae nisi euismod, venenatis\n            dui eu, hendrerit risus.\n        </Text>\n\n        <Blockquote.Cite>— ACCENT</Blockquote.Cite>\n    </Blockquote.Container>\n\n    <Blockquote.Container\n        max_width=\"prose\"\n        palette=\"neutral\"\n    >\n        <Text margin_bottom=\"medium\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Mauris porta, urna vel\n            tristique varius, ipsum erat auctor odio,\n            id imperdiet mauris velit eget quam. Donec\n            viverra urna eu ligula eleifend, sed\n            molestie lectus convallis. Nullam gravida\n            placerat ex, sodales porttitor nibh.\n            Suspendisse vitae nisi euismod, venenatis\n            dui eu, hendrerit risus.\n        </Text>\n\n        <Blockquote.Cite>— NEUTRAL</Blockquote.Cite>\n    </Blockquote.Container>\n\n    <Blockquote.Container\n        max_width=\"prose\"\n        palette=\"dark\"\n    >\n        <Text margin_bottom=\"medium\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Mauris porta, urna vel\n            tristique varius, ipsum erat auctor odio,\n            id imperdiet mauris velit eget quam. Donec\n            viverra urna eu ligula eleifend, sed\n            molestie lectus convallis. Nullam gravida\n            placerat ex, sodales porttitor nibh.\n            Suspendisse vitae nisi euismod, venenatis\n            dui eu, hendrerit risus.\n        </Text>\n\n        <Blockquote.Cite>— DARK</Blockquote.Cite>\n    </Blockquote.Container>\n\n    <Blockquote.Container\n        max_width=\"prose\"\n        palette=\"light\"\n    >\n        <Text margin_bottom=\"medium\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Mauris porta, urna vel\n            tristique varius, ipsum erat auctor odio,\n            id imperdiet mauris velit eget quam. Donec\n            viverra urna eu ligula eleifend, sed\n            molestie lectus convallis. Nullam gravida\n            placerat ex, sodales porttitor nibh.\n            Suspendisse vitae nisi euismod, venenatis\n            dui eu, hendrerit risus.\n        </Text>\n\n        <Blockquote.Cite>— LIGHT</Blockquote.Cite>\n    </Blockquote.Container>\n\n    <Blockquote.Container\n        max_width=\"prose\"\n        palette=\"alert\"\n    >\n        <Text margin_bottom=\"medium\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Mauris porta, urna vel\n            tristique varius, ipsum erat auctor odio,\n            id imperdiet mauris velit eget quam. Donec\n            viverra urna eu ligula eleifend, sed\n            molestie lectus convallis. Nullam gravida\n            placerat ex, sodales porttitor nibh.\n            Suspendisse vitae nisi euismod, venenatis\n            dui eu, hendrerit risus.\n        </Text>\n\n        <Blockquote.Cite>— ALERT</Blockquote.Cite>\n    </Blockquote.Container>\n\n    <Blockquote.Container\n        max_width=\"prose\"\n        palette=\"affirmative\"\n    >\n        <Text margin_bottom=\"medium\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Mauris porta, urna vel\n            tristique varius, ipsum erat auctor odio,\n            id imperdiet mauris velit eget quam. Donec\n            viverra urna eu ligula eleifend, sed\n            molestie lectus convallis. Nullam gravida\n            placerat ex, sodales porttitor nibh.\n            Suspendisse vitae nisi euismod, venenatis\n            dui eu, hendrerit risus.\n        </Text>\n\n        <Blockquote.Cite>\n            — AFFIRMATIVE\n        </Blockquote.Cite>\n    </Blockquote.Container>\n\n    <Blockquote.Container\n        max_width=\"prose\"\n        palette=\"informative\"\n    >\n        <Text margin_bottom=\"medium\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Mauris porta, urna vel\n            tristique varius, ipsum erat auctor odio,\n            id imperdiet mauris velit eget quam. Donec\n            viverra urna eu ligula eleifend, sed\n            molestie lectus convallis. Nullam gravida\n            placerat ex, sodales porttitor nibh.\n            Suspendisse vitae nisi euismod, venenatis\n            dui eu, hendrerit risus.\n        </Text>\n\n        <Blockquote.Cite>— INFORMATIVE</Blockquote.Cite\n        >\n    </Blockquote.Container>\n\n    <Blockquote.Container\n        max_width=\"prose\"\n        palette=\"negative\"\n    >\n        <Text margin_bottom=\"medium\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Mauris porta, urna vel\n            tristique varius, ipsum erat auctor odio,\n            id imperdiet mauris velit eget quam. Donec\n            viverra urna eu ligula eleifend, sed\n            molestie lectus convallis. Nullam gravida\n            placerat ex, sodales porttitor nibh.\n            Suspendisse vitae nisi euismod, venenatis\n            dui eu, hendrerit risus.\n        </Text>\n\n        <Blockquote.Cite>— NEGATIVE</Blockquote.Cite>\n    </Blockquote.Container>\n</Stack.Container>"},{"identifier":"/playground?snippet=blockquote-preview","title":"Blockquote Preview","text":"<script>\n    import {\n        Blockquote,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Blockquote.Container max_width=\"prose\">\n    <Text margin_bottom=\"medium\">\n        Lorem ipsum dolor sit amet, consectetur\n        adipiscing elit. Mauris porta, urna vel\n        tristique varius, ipsum erat auctor odio, id\n        imperdiet mauris velit eget quam. Donec viverra\n        urna eu ligula eleifend, sed molestie lectus\n        convallis. Nullam gravida placerat ex, sodales\n        porttitor nibh. Suspendisse vitae nisi euismod,\n        venenatis dui eu, hendrerit risus. Maecenas at\n        hendrerit odio, at dictum nulla. Morbi\n        tristique, augue vel blandit bibendum, mauris\n        nibh finibus justo, ut mollis magna neque in\n        lectus.\n    </Text>\n\n    <Text margin_bottom=\"medium\">\n        Sed dignissim, enim sit amet lobortis\n        tincidunt, nibh risus elementum urna, vel\n        tincidunt nisi elit vel tortor. Curabitur\n        iaculis nulla nec odio efficitur, sit amet\n        auctor odio mattis. Aenean quam arcu, feugiat\n        non turpis eget, aliquet vestibulum lacus.\n    </Text>\n\n    <Blockquote.Cite>— Lorem Ipsum</Blockquote.Cite>\n</Blockquote.Container>"},{"identifier":"/playground?snippet=box-borders","title":"Box Borders","text":"<script>\n    import {\n        Box,\n        Mosaic,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Mosaic.Container sizing=\"medium\" spacing=\"large\">\n    <Box variation=\"borders\">\n        <Text is=\"strong\">DEFAULT</Text>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non.\n        </Text>\n    </Box>\n\n    <Box variation=\"borders\" palette=\"accent\">\n        <Text is=\"strong\">ACCENT</Text>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non.\n        </Text>\n    </Box>\n\n    <Box variation=\"borders\" palette=\"neutral\">\n        <Text is=\"strong\">NEUTRAL</Text>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non.\n        </Text>\n    </Box>\n\n    <Box variation=\"borders\" palette=\"dark\">\n        <Text is=\"strong\">DARK</Text>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non.\n        </Text>\n    </Box>\n\n    <Box variation=\"borders\" palette=\"light\">\n        <Text is=\"strong\">LIGHT</Text>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non.\n        </Text>\n    </Box>\n\n    <Box variation=\"borders\" palette=\"alert\">\n        <Text is=\"strong\">ALERT</Text>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non.\n        </Text>\n    </Box>\n\n    <Box palette=\"affirmative\">\n        <Text is=\"strong\">AFFIRMATIVE</Text>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non.\n        </Text>\n    </Box>\n\n    <Box variation=\"borders\" palette=\"informative\">\n        <Text is=\"strong\">INFORMATIVE</Text>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non.\n        </Text>\n    </Box>\n\n    <Box variation=\"borders\" palette=\"negative\">\n        <Text is=\"strong\">NEGATIVE</Text>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non.\n        </Text>\n    </Box>\n</Mosaic.Container>"},{"identifier":"/playground?snippet=box-elevation","title":"Box Elevation","text":"<script>\n    import {\n        Box,\n        Mosaic,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Mosaic.Container sizing=\"medium\" spacing=\"large\">\n    <Box>\n        <Text is=\"strong\">DEFAULT</Text>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non.\n        </Text>\n    </Box>\n\n    <Box elevation=\"lowest\">\n        <Text is=\"strong\">LOWEST</Text>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non.\n        </Text>\n    </Box>\n\n    <Box elevation=\"lower\">\n        <Text is=\"strong\">LOWER</Text>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non.\n        </Text>\n    </Box>\n\n    <Box elevation=\"low\">\n        <Text is=\"strong\">LOW</Text>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non.\n        </Text>\n    </Box>\n\n    <Box elevation=\"medium\">\n        <Text is=\"strong\">MEDIUM</Text>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non.\n        </Text>\n    </Box>\n\n    <Box elevation=\"high\">\n        <Text is=\"strong\">HIGH</Text>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non.\n        </Text>\n    </Box>\n\n    <Box elevation=\"higher\">\n        <Text is=\"strong\">HIGHER</Text>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non.\n        </Text>\n    </Box>\n\n    <Box palette=\"inverse\" elevation=\"highest\">\n        <Text is=\"strong\">HIGHEST</Text>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non.\n        </Text>\n    </Box>\n</Mosaic.Container>"},{"identifier":"/playground?snippet=box-palette","title":"Box Palette","text":"<script>\n    import {\n        Box,\n        Mosaic,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Mosaic.Container sizing=\"medium\" spacing=\"large\">\n    <Box>\n        <Text is=\"strong\">DEFAULT</Text>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non.\n        </Text>\n    </Box>\n\n    <Box palette=\"accent\">\n        <Text is=\"strong\">ACCENT</Text>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non.\n        </Text>\n    </Box>\n\n    <Box palette=\"neutral\">\n        <Text is=\"strong\">NEUTRAL</Text>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non.\n        </Text>\n    </Box>\n\n    <Box palette=\"dark\">\n        <Text is=\"strong\">DARK</Text>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non.\n        </Text>\n    </Box>\n\n    <Box palette=\"light\">\n        <Text is=\"strong\">LIGHT</Text>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non.\n        </Text>\n    </Box>\n\n    <Box palette=\"alert\">\n        <Text is=\"strong\">ALERT</Text>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non.\n        </Text>\n    </Box>\n\n    <Box palette=\"affirmative\">\n        <Text is=\"strong\">AFFIRMATIVE</Text>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non.\n        </Text>\n    </Box>\n\n    <Box palette=\"informative\">\n        <Text is=\"strong\">INFORMATIVE</Text>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non.\n        </Text>\n    </Box>\n\n    <Box palette=\"negative\">\n        <Text is=\"strong\">NEGATIVE</Text>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non.\n        </Text>\n    </Box>\n</Mosaic.Container>"},{"identifier":"/playground?snippet=box-preview","title":"Box Preview","text":"<script>\n    import {Box} from \"@kahi-ui/framework\";\n</script>\n\n<Box>This is a Box!</Box>"},{"identifier":"/playground?snippet=box-radius","title":"Box Radius","text":"<script>\n    import {\n        Box,\n        Mosaic,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Mosaic.Container sizing=\"medium\" spacing=\"large\">\n    <Box palette=\"inverse\" padding=\"huge\">\n        <Text is=\"strong\">DEFAULT</Text>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non.\n        </Text>\n    </Box>\n\n    <Box\n        palette=\"inverse\"\n        radius=\"nano\"\n        padding=\"huge\"\n    >\n        <Text is=\"strong\">NANO</Text>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non.\n        </Text>\n    </Box>\n\n    <Box\n        palette=\"inverse\"\n        radius=\"tiny\"\n        padding=\"huge\"\n    >\n        <Text is=\"strong\">TINY</Text>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non.\n        </Text>\n    </Box>\n\n    <Box\n        palette=\"inverse\"\n        radius=\"small\"\n        padding=\"huge\"\n    >\n        <Text is=\"strong\">SMALL</Text>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non.\n        </Text>\n    </Box>\n\n    <Box\n        palette=\"inverse\"\n        radius=\"medium\"\n        padding=\"huge\"\n    >\n        <Text is=\"strong\">MEDIUM</Text>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non.\n        </Text>\n    </Box>\n\n    <Box\n        palette=\"inverse\"\n        radius=\"large\"\n        padding=\"huge\"\n    >\n        <Text is=\"strong\">LARGE</Text>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non.\n        </Text>\n    </Box>\n\n    <Box\n        palette=\"inverse\"\n        radius=\"huge\"\n        padding=\"huge\"\n    >\n        <Text is=\"strong\">HUGE</Text>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non.\n        </Text>\n    </Box>\n\n    <Box\n        palette=\"inverse\"\n        radius=\"massive\"\n        padding=\"huge\"\n    >\n        <Text is=\"strong\">MASSIVE</Text>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non.\n        </Text>\n    </Box>\n</Mosaic.Container>"},{"identifier":"/playground?snippet=box-shape","title":"Box Shape","text":"<script>\n    import {\n        Box,\n        Mosaic,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Mosaic.Container sizing=\"medium\" spacing=\"large\">\n    <Box palette=\"inverse\" padding=\"huge\">\n        <Text is=\"strong\">DEFAULT</Text>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non.\n        </Text>\n    </Box>\n\n    <Box\n        palette=\"inverse\"\n        shape=\"circle\"\n        padding=\"huge\"\n    >\n        <Text is=\"strong\">CIRCLE</Text>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non.\n        </Text>\n    </Box>\n\n    <Box palette=\"inverse\" shape=\"pill\" padding=\"huge\">\n        <Text is=\"strong\">PILL</Text>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non.\n        </Text>\n    </Box>\n</Mosaic.Container>"},{"identifier":"/playground?snippet=breadcrumb-elements","title":"Breadcrumb Elements","text":"<script>\n    import {\n        Breadcrumb,\n        Stack,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <Breadcrumb.Container>\n        <Breadcrumb.Anchor href=\"#\">\n            Home\n        </Breadcrumb.Anchor>\n\n        <Breadcrumb.Anchor href=\"#\">\n            Contacts\n        </Breadcrumb.Anchor>\n\n        <Breadcrumb.Anchor href=\"#\" active>\n            Anchor\n        </Breadcrumb.Anchor>\n    </Breadcrumb.Container>\n\n    <Breadcrumb.Container>\n        <Breadcrumb.Button>Home</Breadcrumb.Button>\n        <Breadcrumb.Button>Contacts</Breadcrumb.Button>\n\n        <Breadcrumb.Button active>\n            Button\n        </Breadcrumb.Button>\n    </Breadcrumb.Container>\n</Stack.Container>"},{"identifier":"/playground?snippet=breadcrumb-palette","title":"Breadcrumb Palette","text":"<script>\n    import {\n        Breadcrumb,\n        Stack,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <Breadcrumb.Container>\n        <Breadcrumb.Anchor href=\"#\">\n            Home\n        </Breadcrumb.Anchor>\n\n        <Breadcrumb.Anchor href=\"#\">\n            Contacts\n        </Breadcrumb.Anchor>\n\n        <Breadcrumb.Anchor href=\"#\" active>\n            DEFAULT\n        </Breadcrumb.Anchor>\n    </Breadcrumb.Container>\n\n    <Breadcrumb.Container palette=\"accent\">\n        <Breadcrumb.Anchor href=\"#\">\n            Home\n        </Breadcrumb.Anchor>\n\n        <Breadcrumb.Anchor href=\"#\">\n            Contacts\n        </Breadcrumb.Anchor>\n\n        <Breadcrumb.Anchor href=\"#\" active>\n            ACCENT\n        </Breadcrumb.Anchor>\n    </Breadcrumb.Container>\n\n    <Breadcrumb.Container palette=\"neutral\">\n        <Breadcrumb.Anchor href=\"#\">\n            Home\n        </Breadcrumb.Anchor>\n\n        <Breadcrumb.Anchor href=\"#\">\n            Contacts\n        </Breadcrumb.Anchor>\n\n        <Breadcrumb.Anchor href=\"#\" active>\n            NEUTRAL\n        </Breadcrumb.Anchor>\n    </Breadcrumb.Container>\n\n    <Breadcrumb.Container palette=\"dark\">\n        <Breadcrumb.Anchor href=\"#\">\n            Home\n        </Breadcrumb.Anchor>\n\n        <Breadcrumb.Anchor href=\"#\">\n            Contacts\n        </Breadcrumb.Anchor>\n\n        <Breadcrumb.Anchor href=\"#\" active>\n            DARK\n        </Breadcrumb.Anchor>\n    </Breadcrumb.Container>\n\n    <Breadcrumb.Container palette=\"light\">\n        <Breadcrumb.Anchor href=\"#\">\n            Home\n        </Breadcrumb.Anchor>\n\n        <Breadcrumb.Anchor href=\"#\">\n            Contacts\n        </Breadcrumb.Anchor>\n\n        <Breadcrumb.Anchor href=\"#\" active>\n            LIGHT\n        </Breadcrumb.Anchor>\n    </Breadcrumb.Container>\n\n    <Breadcrumb.Container palette=\"affirmative\">\n        <Breadcrumb.Anchor href=\"#\">\n            Home\n        </Breadcrumb.Anchor>\n\n        <Breadcrumb.Anchor href=\"#\">\n            Contacts\n        </Breadcrumb.Anchor>\n\n        <Breadcrumb.Anchor href=\"#\" active>\n            AFFIRMATIVE\n        </Breadcrumb.Anchor>\n    </Breadcrumb.Container>\n\n    <Breadcrumb.Container palette=\"informative\">\n        <Breadcrumb.Anchor href=\"#\">\n            Home\n        </Breadcrumb.Anchor>\n\n        <Breadcrumb.Anchor href=\"#\">\n            Contacts\n        </Breadcrumb.Anchor>\n\n        <Breadcrumb.Anchor href=\"#\" active>\n            INFORMATIVE\n        </Breadcrumb.Anchor>\n    </Breadcrumb.Container>\n\n    <Breadcrumb.Container palette=\"negative\">\n        <Breadcrumb.Anchor href=\"#\">\n            Home\n        </Breadcrumb.Anchor>\n\n        <Breadcrumb.Anchor href=\"#\">\n            Contacts\n        </Breadcrumb.Anchor>\n\n        <Breadcrumb.Anchor href=\"#\" active>\n            NEGATIVE\n        </Breadcrumb.Anchor>\n    </Breadcrumb.Container>\n</Stack.Container>"},{"identifier":"/playground?snippet=breadcrumb-preview","title":"Breadcrumb Preview","text":"<script>\n    import {Breadcrumb} from \"@kahi-ui/framework\";\n</script>\n\n<Breadcrumb.Container>\n    <Breadcrumb.Anchor href=\"#\">\n        home\n    </Breadcrumb.Anchor>\n\n    <Breadcrumb.Anchor href=\"#\">\n        pictures\n    </Breadcrumb.Anchor>\n\n    <Breadcrumb.Anchor href=\"#\" active>\n        IMG_20191123_121131.jpg\n    </Breadcrumb.Anchor>\n</Breadcrumb.Container>"},{"identifier":"/playground?snippet=breadcrumb-separator","title":"Breadcrumb Separator","text":"<script>\n    import {Breadcrumb} from \"@kahi-ui/framework\";\n</script>\n\n<Breadcrumb.Container separator=\">\">\n    <Breadcrumb.Anchor href=\"#\">\n        Home\n    </Breadcrumb.Anchor>\n\n    <Breadcrumb.Anchor href=\"#\">\n        Contacts\n    </Breadcrumb.Anchor>\n\n    <Breadcrumb.Anchor href=\"#\" active>\n        John Doe\n    </Breadcrumb.Anchor>\n</Breadcrumb.Container>"},{"identifier":"/playground?snippet=browserrender-preview","title":"BrowserRender Preview","text":"<script>\n    import {BrowserRender} from \"@kahi-ui/framework\";\n</script>\n\n<BrowserRender>\n    This will only render on the Browser.\n</BrowserRender>"},{"identifier":"/playground?snippet=button-clear","title":"Button Clear","text":"<script>\n    import {Button, Stack} from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <Button variation=\"clear\">\n        This is a DEFAULT Button!\n    </Button>\n\n    <Button variation=\"clear\" palette=\"accent\">\n        This is a ACCENT Button!\n    </Button>\n\n    <Button variation=\"clear\" palette=\"neutral\">\n        This is a NEUTRAL Button!\n    </Button>\n\n    <Button variation=\"clear\" palette=\"light\">\n        This is a LIGHT Button!\n    </Button>\n\n    <Button variation=\"clear\" palette=\"dark\">\n        This is a DARK Button!\n    </Button>\n\n    <Button variation=\"clear\" palette=\"alert\">\n        This is a ALERT Button!\n    </Button>\n\n    <Button variation=\"clear\" palette=\"affirmative\">\n        This is a AFFIRMATIVE Button!\n    </Button>\n\n    <Button variation=\"clear\" palette=\"informative\">\n        This is a INFORMATIVE Button!\n    </Button>\n\n    <Button variation=\"clear\" palette=\"negative\">\n        This is a NEGATIVE Button!\n    </Button>\n</Stack.Container>"},{"identifier":"/playground?snippet=button-elements","title":"Button Elements","text":"<script>\n    import {\n        Button,\n        Check,\n        Stack,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Check id=\"button-types-label\" />\n\n<Stack.Container\n    alignment_y=\"top\"\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <Button>This is a DEFAULT Button!</Button>\n\n    <Button\n        is=\"a\"\n        href=\"https://google.com\"\n        target=\"_blank\"\n        rel=\"noopener noreferrer\"\n    >\n        This is an ANCHOR Button!\n    </Button>\n\n    <Button is=\"label\" for=\"button-types-label\">\n        This is a LABEL Button!\n    </Button>\n\n    <Button\n        is=\"input\"\n        value=\"This is an INPUT Button!\"\n    />\n\n    <Button\n        is=\"input\"\n        type=\"submit\"\n        value=\"This is a SUBMIT Button!\"\n    />\n\n    <Button\n        is=\"input\"\n        type=\"reset\"\n        value=\"This is a RESET Button!\"\n    />\n</Stack.Container>"},{"identifier":"/playground?snippet=button-outline","title":"Button Outline","text":"<script>\n    import {Button, Stack} from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <Button variation=\"outline\">\n        This is a DEFAULT Button!\n    </Button>\n\n    <Button variation=\"outline\" palette=\"accent\">\n        This is a ACCENT Button!\n    </Button>\n\n    <Button variation=\"outline\" palette=\"neutral\">\n        This is a NEUTRAL Button!\n    </Button>\n\n    <Button variation=\"outline\" palette=\"light\">\n        This is a LIGHT Button!\n    </Button>\n\n    <Button variation=\"outline\" palette=\"dark\">\n        This is a DARK Button!\n    </Button>\n\n    <Button variation=\"outline\" palette=\"alert\">\n        This is a ALERT Button!\n    </Button>\n\n    <Button variation=\"outline\" palette=\"affirmative\">\n        This is a AFFIRMATIVE Button!\n    </Button>\n\n    <Button variation=\"outline\" palette=\"informative\">\n        This is a INFORMATIVE Button!\n    </Button>\n\n    <Button variation=\"outline\" palette=\"negative\">\n        This is a NEGATIVE Button!\n    </Button>\n</Stack.Container>"},{"identifier":"/playground?snippet=button-palette","title":"Button Palette","text":"<script>\n    import {Button, Stack} from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <Button>This is a DEFAULT Button!</Button>\n\n    <Button palette=\"accent\">\n        This is a ACCENT Button!\n    </Button>\n\n    <Button palette=\"neutral\">\n        This is a NEUTRAL Button!\n    </Button>\n\n    <Button palette=\"light\">\n        This is a LIGHT Button!\n    </Button>\n\n    <Button palette=\"dark\">\n        This is a DARK Button!\n    </Button>\n\n    <Button palette=\"alert\">\n        This is a ALERT Button!\n    </Button>\n\n    <Button palette=\"affirmative\">\n        This is a AFFIRMATIVE Button!\n    </Button>\n\n    <Button palette=\"informative\">\n        This is a INFORMATIVE Button!\n    </Button>\n\n    <Button palette=\"negative\">\n        This is a NEGATIVE Button!\n    </Button>\n</Stack.Container>"},{"identifier":"/playground?snippet=button-preview","title":"Button Preview","text":"<script>\n    import {Button} from \"@kahi-ui/framework\";\n</script>\n\n<Button palette=\"accent\">Click Me!</Button>"},{"identifier":"/playground?snippet=button-radius","title":"Button Radius","text":"<script>\n    import {Button, Stack} from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    alignment_y=\"top\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <Button>This is a DEFAULT Button!</Button>\n\n    <Button radius=\"none\">\n        This is a NONE Button!\n    </Button>\n\n    <Button radius=\"nano\">\n        This is a NANO Button!\n    </Button>\n\n    <Button radius=\"tiny\">\n        This is a TINY Button!\n    </Button>\n\n    <Button radius=\"small\">\n        This is a SMALL Button!\n    </Button>\n\n    <Button radius=\"medium\">\n        This is a MEDIUM Button!\n    </Button>\n\n    <Button radius=\"large\">\n        This is a LARGE Button!\n    </Button>\n\n    <Button radius=\"huge\">\n        This is a HUGE Button!\n    </Button>\n\n    <Button radius=\"massive\">\n        This is a MASSIVE Button!\n    </Button>\n</Stack.Container>"},{"identifier":"/playground?snippet=button-shapes","title":"Button Shapes","text":"<script>\n    import {Button, Stack} from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    alignment_y=\"top\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <Button>This is a DEFAULT Button!</Button>\n\n    <Button shape=\"circle\">\n        This is a CIRCLE Button!\n    </Button>\n\n    <Button shape=\"pill\">\n        This is a PILL Button!\n    </Button>\n</Stack.Container>"},{"identifier":"/playground?snippet=button-sizing","title":"Button Sizing","text":"<script>\n    import {Button, Stack} from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    alignment_y=\"top\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <Button>This is a DEFAULT Button!</Button>\n\n    <Button sizing=\"nano\">\n        This is a NANO Button!\n    </Button>\n\n    <Button sizing=\"tiny\">\n        This is a TINY Button!\n    </Button>\n\n    <Button sizing=\"small\">\n        This is a SMALL Button!\n    </Button>\n\n    <Button sizing=\"medium\">\n        This is a MEDIUM Button!\n    </Button>\n\n    <Button sizing=\"large\">\n        This is a LARGE Button!\n    </Button>\n\n    <Button sizing=\"huge\">\n        This is a HUGE Button!\n    </Button>\n\n    <Button sizing=\"massive\">\n        This is a MASSIVE Button!\n    </Button>\n</Stack.Container>"},{"identifier":"/playground?snippet=button-states","title":"Button States","text":"<script>\n    import {\n        Button,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Text is=\"strong\">DEFAULT</Text>\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <Button>DEFAULT</Button>\n    <Button disabled>DISABLED INACTIVE</Button>\n    <Button active>ACTIVE</Button>\n    <Button active disabled>DISABLED ACTIVE</Button>\n</Stack.Container>\n\n<Text is=\"strong\">OUTLINE</Text>\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <Button variation=\"outline\">DEFAULT</Button>\n    <Button variation=\"outline\" disabled>\n        DISABLED INACTIVE\n    </Button>\n\n    <Button variation=\"outline\" active>ACTIVE</Button>\n    <Button variation=\"outline\" active disabled>\n        DISABLED ACTIVE\n    </Button>\n</Stack.Container>\n\n<Text is=\"strong\">CLEAR</Text>\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <Button variation=\"clear\">DEFAULT</Button>\n    <Button variation=\"clear\" disabled>\n        DISABLED INACTIVE\n    </Button>\n    <Button variation=\"clear\" active>ACTIVE</Button>\n    <Button variation=\"clear\" active disabled>\n        DISABLED ACTIVE\n    </Button>\n</Stack.Container>"},{"identifier":"/playground?snippet=button-subtle","title":"Button Subtle","text":"<script>\n    import {Button, Stack} from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <Button palette=\"inverse\" variation=\"subtle\">\n        This is a SUBTLE BLOCK Button!\n    </Button>\n\n    <Button\n        palette=\"inverse\"\n        variation={[\"subtle\", \"clear\"]}\n    >\n        This is a CLEAR OUTLINE Button!\n    </Button>\n\n    <Button\n        palette=\"inverse\"\n        variation={[\"subtle\", \"outline\"]}\n    >\n        This is a SUBTLE OUTLINE Button!\n    </Button>\n</Stack.Container>"},{"identifier":"/playground?snippet=calculator-preview","title":"Calculator Preview","text":"<script>\n    import {\n        Button,\n        Grid,\n        TextInput,\n        Stack,\n        keybind,\n    } from \"@kahi-ui/framework\";\n\n    const ADD = [\"+\", (a, b) => a + b];\n    const SUBTRACT = [\"-\", (a, b) => a - b];\n\n    const MULTIPLY = [\"*\", (a, b) => a * b];\n    const DIVIDE = [\"/\", (a, b) => a / b];\n\n    let operations = [0];\n\n    function on_bind_entry(event, number) {\n        event.preventDefault();\n        if (event.detail.active) on_entry(number);\n    }\n\n    function on_calculate() {\n        let buffer = [...operations];\n\n        let next_value, previous_value, operation;\n        while (buffer.length > 2) {\n            [\n                previous_value,\n                operation,\n                next_value,\n                ...buffer\n            ] = buffer;\n\n            buffer = [\n                Math.trunc(\n                    operation[1](\n                        previous_value,\n                        next_value\n                    )\n                ),\n                ...buffer,\n            ];\n        }\n\n        operations = buffer;\n    }\n\n    function on_clear() {\n        operations = [0];\n    }\n\n    function on_delete() {\n        const current_index = operations.length - 1;\n        const current_value =\n            operations[current_index];\n\n        if (current_value instanceof Array) {\n            operations = operations.slice(0, -1);\n        } else {\n            operations = [...operations];\n            operations[current_index] = parseInt(\n                current_value\n                    .toString()\n                    .slice(0, -1) || \"0\"\n            );\n        }\n    }\n\n    function on_entry(entry) {\n        const current_index = operations.length - 1;\n\n        if (operations[current_index] === 0) {\n            operations = [...operations];\n            operations[current_index] = entry;\n        } else {\n            const current_value =\n                operations[current_index];\n\n            if (current_value instanceof Array)\n                operations = [...operations, entry];\n            else {\n                operations = [...operations];\n                operations[current_index] = parseInt(\n                    `${current_value}${entry}`\n                );\n            }\n        }\n    }\n\n    function on_operation(operation) {\n        const current_index = operations.length - 1;\n        const current_value =\n            operations[current_index];\n\n        if (current_value instanceof Array) {\n            operations = [...operations];\n            operations[current_index] = operation;\n        } else {\n            operations = [...operations, operation];\n        }\n    }\n\n    $: _can_calculate = operations.length > 2;\n\n    $: _display = operations\n        .map((operation) =>\n            operation instanceof Array\n                ? operation[0]\n                : operation\n        )\n        .join(\" \");\n</script>\n\n<svelte:window\n    use:keybind={{\n        binds: \"+\",\n        on_bind: (event) => {\n            event.preventDefault();\n            if (event.detail.active) on_operation(ADD);\n        },\n    }}\n    use:keybind={{\n        binds: \"-\",\n        on_bind: (event) => {\n            event.preventDefault();\n            if (event.detail.active)\n                on_operation(SUBTRACT);\n        },\n    }}\n    use:keybind={{\n        binds: \"*\",\n        on_bind: (event) => {\n            event.preventDefault();\n            if (event.detail.active)\n                on_operation(MULTIPLY);\n        },\n    }}\n    use:keybind={{\n        binds: \"/\",\n        on_bind: (event) => {\n            event.preventDefault();\n            if (event.detail.active)\n                on_operation(DIVIDE);\n        },\n    }}\n    use:keybind={{\n        binds: \"0\",\n        on_bind: (event) => on_bind_entry(event, 0),\n    }}\n    use:keybind={{\n        binds: \"1\",\n        on_bind: (event) => on_bind_entry(event, 1),\n    }}\n    use:keybind={{\n        binds: \"2\",\n        on_bind: (event) => on_bind_entry(event, 2),\n    }}\n    use:keybind={{\n        binds: \"3\",\n        on_bind: (event) => on_bind_entry(event, 3),\n    }}\n    use:keybind={{\n        binds: \"4\",\n        on_bind: (event) => on_bind_entry(event, 4),\n    }}\n    use:keybind={{\n        binds: \"5\",\n        on_bind: (event) => on_bind_entry(event, 5),\n    }}\n    use:keybind={{\n        binds: \"6\",\n        on_bind: (event) => on_bind_entry(event, 6),\n    }}\n    use:keybind={{\n        binds: \"7\",\n        on_bind: (event) => on_bind_entry(event, 7),\n    }}\n    use:keybind={{\n        binds: \"8\",\n        on_bind: (event) => on_bind_entry(event, 8),\n    }}\n    use:keybind={{\n        binds: \"9\",\n        on_bind: (event) => on_bind_entry(event, 9),\n    }}\n    use:keybind={{\n        binds: [\"backspace\", \"delete\"],\n        on_bind: (event) => {\n            event.preventDefault();\n            if (event.detail.active) on_delete();\n        },\n    }}\n    use:keybind={{\n        binds: [\"c\"],\n        on_bind: (event) => {\n            event.preventDefault();\n            if (event.detail.active) on_clear();\n        },\n    }}\n    use:keybind={{\n        binds: [\"enter\", \"=\"],\n        on_bind: (event) => {\n            event.preventDefault();\n            if (event.detail.active && _can_calculate)\n                on_calculate();\n        },\n    }}\n/>\n\n<Stack.Container\n    spacing=\"small\"\n    height=\"viewport-100\"\n    max_height=\"100\"\n>\n    <TextInput\n        value={_display}\n        radius=\"none\"\n        sizing=\"huge\"\n        readonly\n    />\n\n    <Stack.Item variation=\"stretch\">\n        <Grid.Container\n            points=\"4\"\n            spacing=\"small\"\n            padding=\"small\"\n        >\n            <Button\n                palette=\"inverse\"\n                sizing=\"large\"\n                on:click={() => on_operation(ADD)}\n            >\n                &plus;\n            </Button>\n            <Button\n                palette=\"inverse\"\n                sizing=\"large\"\n                on:click={() => on_operation(SUBTRACT)}\n            >\n                &minus;\n            </Button>\n            <Button\n                palette=\"inverse\"\n                sizing=\"large\"\n                on:click={() => on_operation(MULTIPLY)}\n            >\n                &times;\n            </Button>\n            <Button\n                palette=\"inverse\"\n                sizing=\"large\"\n                on:click={() => on_operation(DIVIDE)}\n            >\n                &divide;\n            </Button>\n\n            <Button\n                sizing=\"large\"\n                shape=\"pill\"\n                on:click={() => on_entry(7)}\n            >\n                7\n            </Button>\n            <Button\n                sizing=\"large\"\n                shape=\"pill\"\n                on:click={() => on_entry(8)}\n            >\n                8\n            </Button>\n            <Button\n                sizing=\"large\"\n                shape=\"pill\"\n                on:click={() => on_entry(9)}\n            >\n                9\n            </Button>\n            <Grid.Item span_y=\"2\">\n                <Button\n                    sizing=\"large\"\n                    palette=\"negative\"\n                    on:click={() => on_clear()}\n                >\n                    C\n                </Button>\n            </Grid.Item>\n\n            <Button\n                sizing=\"large\"\n                shape=\"pill\"\n                on:click={() => on_entry(4)}\n            >\n                4\n            </Button>\n            <Button\n                sizing=\"large\"\n                shape=\"pill\"\n                on:click={() => on_entry(5)}\n            >\n                5\n            </Button>\n            <Button\n                sizing=\"large\"\n                shape=\"pill\"\n                on:click={() => on_entry(6)}\n            >\n                6\n            </Button>\n\n            <Button\n                sizing=\"large\"\n                shape=\"pill\"\n                on:click={() => on_entry(1)}\n            >\n                1\n            </Button>\n            <Button\n                sizing=\"large\"\n                shape=\"pill\"\n                on:click={() => on_entry(2)}\n            >\n                2\n            </Button>\n            <Button\n                sizing=\"large\"\n                shape=\"pill\"\n                on:click={() => on_entry(3)}\n            >\n                3\n            </Button>\n            <Grid.Item span_y=\"2\">\n                <Button\n                    disabled={!_can_calculate}\n                    sizing=\"large\"\n                    palette=\"accent\"\n                    on:click={() => on_calculate()}\n                >\n                    &equals;\n                </Button>\n            </Grid.Item>\n\n            <Grid.Item span_x=\"2\">\n                <Button\n                    sizing=\"large\"\n                    shape=\"pill\"\n                    on:click={() => on_entry(0)}\n                >\n                    0\n                </Button>\n            </Grid.Item>\n\n            <Button\n                palette=\"negative\"\n                sizing=\"large\"\n                on:click={() => on_delete()}\n            >\n                DEL\n            </Button>\n        </Grid.Container>\n    </Stack.Item>\n</Stack.Container>"},{"identifier":"/playground?snippet=card-elevation","title":"Card Elevation","text":"<script>\n    import {\n        Badge,\n        Button,\n        Card,\n        Mosaic,\n        Spacer,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Mosaic.Container sizing=\"medium\" spacing=\"large\">\n    <Card.Container elevation=\"lowest\">\n        <Card.Figure>\n            <img src={IMAGE_BACKGROUND} />\n        </Card.Figure>\n\n        <Card.Header>\n            Ocean Rockies\n            <Spacer />\n            <Badge>DEFAULT</Badge>\n        </Card.Header>\n\n        <Card.Section>\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non.\n            </Text>\n        </Card.Section>\n    </Card.Container>\n\n    <Card.Container elevation=\"none\">\n        <Card.Figure>\n            <img src={IMAGE_BACKGROUND} />\n        </Card.Figure>\n\n        <Card.Header>\n            Ocean Rockies\n            <Spacer />\n            <Badge>NONE</Badge>\n        </Card.Header>\n\n        <Card.Section>\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non.\n            </Text>\n        </Card.Section>\n    </Card.Container>\n\n    <Card.Container elevation=\"lowest\">\n        <Card.Figure>\n            <img src={IMAGE_BACKGROUND} />\n        </Card.Figure>\n\n        <Card.Header>\n            Ocean Rockies\n            <Spacer />\n            <Badge>LOWEST</Badge>\n        </Card.Header>\n\n        <Card.Section>\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non.\n            </Text>\n        </Card.Section>\n    </Card.Container>\n\n    <Card.Container elevation=\"lower\">\n        <Card.Figure>\n            <img src={IMAGE_BACKGROUND} />\n        </Card.Figure>\n\n        <Card.Header>\n            Ocean Rockies\n            <Spacer />\n            <Badge>LOWER</Badge>\n        </Card.Header>\n\n        <Card.Section>\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non.\n            </Text>\n        </Card.Section>\n    </Card.Container>\n\n    <Card.Container elevation=\"low\">\n        <Card.Figure>\n            <img src={IMAGE_BACKGROUND} />\n        </Card.Figure>\n\n        <Card.Header>\n            Ocean Rockies\n            <Spacer />\n            <Badge>LOW</Badge>\n        </Card.Header>\n\n        <Card.Section>\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non.\n            </Text>\n        </Card.Section>\n    </Card.Container>\n\n    <Card.Container elevation=\"medium\">\n        <Card.Figure>\n            <img src={IMAGE_BACKGROUND} />\n        </Card.Figure>\n\n        <Card.Header>\n            Ocean Rockies\n            <Spacer />\n            <Badge>MEDIUM</Badge>\n        </Card.Header>\n\n        <Card.Section>\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non.\n            </Text>\n        </Card.Section>\n    </Card.Container>\n\n    <Card.Container elevation=\"high\">\n        <Card.Figure>\n            <img src={IMAGE_BACKGROUND} />\n        </Card.Figure>\n\n        <Card.Header>\n            Ocean Rockies\n            <Spacer />\n            <Badge>HIGH</Badge>\n        </Card.Header>\n\n        <Card.Section>\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non.\n            </Text>\n        </Card.Section>\n    </Card.Container>\n\n    <Card.Container elevation=\"higher\">\n        <Card.Figure>\n            <img src={IMAGE_BACKGROUND} />\n        </Card.Figure>\n\n        <Card.Header>\n            Ocean Rockies\n            <Spacer />\n            <Badge>HIGHER</Badge>\n        </Card.Header>\n\n        <Card.Section>\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non.\n            </Text>\n        </Card.Section>\n    </Card.Container>\n\n    <Card.Container elevation=\"highest\">\n        <Card.Figure>\n            <img src={IMAGE_BACKGROUND} />\n        </Card.Figure>\n\n        <Card.Header>\n            Ocean Rockies\n            <Spacer />\n            <Badge>HIGHEST</Badge>\n        </Card.Header>\n\n        <Card.Section>\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non.\n            </Text>\n        </Card.Section>\n    </Card.Container>\n</Mosaic.Container>"},{"identifier":"/playground?snippet=card-flush","title":"Card Flush","text":"<script>\n    import {\n        Badge,\n        Button,\n        Card,\n        Spacer,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Card.Container class=\"card-flush\" variation=\"flush\">\n    <Card.Figure>\n        <img src={IMAGE_BACKGROUND} />\n    </Card.Figure>\n\n    <Card.Header>\n        Ocean Rockies\n        <Spacer />\n        <Badge palette=\"affirmative\">AVAILABLE</Badge>\n    </Card.Header>\n\n    <Card.Section>\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </Card.Section>\n\n    <Card.Footer>\n        <Button palette=\"accent\">Book Flight</Button>\n    </Card.Footer>\n</Card.Container>\n\n<style>\n    :global(.card-flush) {\n        max-width: 35ch;\n    }\n</style>"},{"identifier":"/playground?snippet=card-orientation","title":"Card Orientation","text":"<script>\n    import {\n        Badge,\n        Button,\n        Card,\n        Mosaic,\n        Spacer,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Mosaic.Container sizing=\"medium\" spacing=\"large\">\n    <Card.Container>\n        <Card.Figure>\n            <img src={IMAGE_BACKGROUND} />\n        </Card.Figure>\n\n        <Card.Header>\n            Ocean Rockies\n            <Spacer />\n            <Badge>HORIZONTAL / DEFAULT</Badge>\n        </Card.Header>\n\n        <Card.Section>\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non.\n            </Text>\n        </Card.Section>\n\n        <Card.Footer>\n            <Button variation=\"clear\">Cancel</Button>\n            <Button palette=\"accent\">\n                Book Flight\n            </Button>\n        </Card.Footer>\n    </Card.Container>\n\n    <Card.Container>\n        <Card.Figure>\n            <img src={IMAGE_BACKGROUND} />\n        </Card.Figure>\n\n        <Card.Header>\n            Ocean Rockies\n            <Spacer />\n            <Badge>VERTICAL</Badge>\n        </Card.Header>\n\n        <Card.Section>\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non.\n            </Text>\n        </Card.Section>\n\n        <Card.Footer\n            orientation=\"vertical\"\n            alignment_x=\"stretch\"\n        >\n            <Button palette=\"accent\">\n                Book Flight\n            </Button>\n\n            <Button variation=\"clear\">Cancel</Button>\n        </Card.Footer>\n    </Card.Container>\n</Mosaic.Container>"},{"identifier":"/playground?snippet=card-palette","title":"Card Palette","text":"<script>\n    import {\n        Badge,\n        Button,\n        Card,\n        Mosaic,\n        Spacer,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Mosaic.Container sizing=\"medium\" spacing=\"medium\">\n    <Card.Container>\n        <Card.Figure>\n            <img src={IMAGE_BACKGROUND} />\n        </Card.Figure>\n\n        <Card.Header>\n            Ocean Rockies\n            <Spacer />\n            <Badge>DEFAULT</Badge>\n        </Card.Header>\n\n        <Card.Section>\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non.\n            </Text>\n        </Card.Section>\n    </Card.Container>\n\n    <Card.Container palette=\"accent\">\n        <Card.Figure>\n            <img src={IMAGE_BACKGROUND} />\n        </Card.Figure>\n\n        <Card.Header>\n            Ocean Rockies\n            <Spacer />\n            <Badge>ACCENT</Badge>\n        </Card.Header>\n\n        <Card.Section>\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non.\n            </Text>\n        </Card.Section>\n    </Card.Container>\n\n    <Card.Container palette=\"neutral\">\n        <Card.Figure>\n            <img src={IMAGE_BACKGROUND} />\n        </Card.Figure>\n\n        <Card.Header>\n            Ocean Rockies\n            <Spacer />\n            <Badge>NEUTRAL</Badge>\n        </Card.Header>\n\n        <Card.Section>\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non.\n            </Text>\n        </Card.Section>\n    </Card.Container>\n\n    <Card.Container palette=\"dark\">\n        <Card.Figure>\n            <img src={IMAGE_BACKGROUND} />\n        </Card.Figure>\n\n        <Card.Header>\n            Ocean Rockies\n            <Spacer />\n            <Badge>DARK</Badge>\n        </Card.Header>\n\n        <Card.Section>\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non.\n            </Text>\n        </Card.Section>\n    </Card.Container>\n\n    <Card.Container palette=\"light\">\n        <Card.Figure>\n            <img src={IMAGE_BACKGROUND} />\n        </Card.Figure>\n\n        <Card.Header>\n            Ocean Rockies\n            <Spacer />\n            <Badge>LIGHT</Badge>\n        </Card.Header>\n\n        <Card.Section>\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non.\n            </Text>\n        </Card.Section>\n    </Card.Container>\n\n    <Card.Container palette=\"alert\">\n        <Card.Figure>\n            <img src={IMAGE_BACKGROUND} />\n        </Card.Figure>\n\n        <Card.Header>\n            Ocean Rockies\n            <Spacer />\n            <Badge>ALERT</Badge>\n        </Card.Header>\n\n        <Card.Section>\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non.\n            </Text>\n        </Card.Section>\n    </Card.Container>\n\n    <Card.Container palette=\"affirmative\">\n        <Card.Figure>\n            <img src={IMAGE_BACKGROUND} />\n        </Card.Figure>\n\n        <Card.Header>\n            Ocean Rockies\n            <Spacer />\n            <Badge>AFFIRMATIVE</Badge>\n        </Card.Header>\n\n        <Card.Section>\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non.\n            </Text>\n        </Card.Section>\n    </Card.Container>\n\n    <Card.Container palette=\"informative\">\n        <Card.Figure>\n            <img src={IMAGE_BACKGROUND} />\n        </Card.Figure>\n\n        <Card.Header>\n            Ocean Rockies\n            <Spacer />\n            <Badge>INFORMATIVE</Badge>\n        </Card.Header>\n\n        <Card.Section>\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non.\n            </Text>\n        </Card.Section>\n    </Card.Container>\n\n    <Card.Container palette=\"negative\">\n        <Card.Figure>\n            <img src={IMAGE_BACKGROUND} />\n        </Card.Figure>\n\n        <Card.Header>\n            Ocean Rockies\n            <Spacer />\n            <Badge>NEGATIVE</Badge>\n        </Card.Header>\n\n        <Card.Section>\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non.\n            </Text>\n        </Card.Section>\n    </Card.Container>\n</Mosaic.Container>"},{"identifier":"/playground?snippet=card-preview","title":"Card Preview","text":"<script>\n    import {\n        Badge,\n        Button,\n        Card,\n        Spacer,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Card.Container class=\"card-preview\">\n    <Card.Figure>\n        <img src={IMAGE_BACKGROUND} />\n    </Card.Figure>\n\n    <Card.Header>\n        Ocean Rockies\n        <Spacer />\n        <Badge palette=\"affirmative\">AVAILABLE</Badge>\n    </Card.Header>\n\n    <Card.Section>\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </Card.Section>\n\n    <Card.Footer>\n        <Button palette=\"accent\">Book Flight</Button>\n    </Card.Footer>\n</Card.Container>\n\n<style>\n    :global(.card-preview) {\n        max-width: 35ch;\n    }\n</style>"},{"identifier":"/playground?snippet=card-sizing","title":"Card Sizing","text":"<script>\n    import {\n        Card,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    class=\"card-sizing\"\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    alignment_y=\"top\"\n    variation=\"wrap\"\n>\n    <Card.Container>\n        <Card.Header>DEFAULT</Card.Header>\n\n        <Card.Section>\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non.\n            </Text>\n        </Card.Section>\n    </Card.Container>\n\n    <Card.Container sizing=\"nano\">\n        <Card.Header>NANO</Card.Header>\n\n        <Card.Section>\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non.\n            </Text>\n        </Card.Section>\n    </Card.Container>\n\n    <Card.Container sizing=\"tiny\">\n        <Card.Header>TINY</Card.Header>\n\n        <Card.Section>\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non.\n            </Text>\n        </Card.Section>\n    </Card.Container>\n\n    <Card.Container sizing=\"small\">\n        <Card.Header>SMALL</Card.Header>\n\n        <Card.Section>\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non.\n            </Text>\n        </Card.Section>\n    </Card.Container>\n\n    <Card.Container sizing=\"medium\">\n        <Card.Header>MEDIUM</Card.Header>\n\n        <Card.Section>\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non.\n            </Text>\n        </Card.Section>\n    </Card.Container>\n\n    <Card.Container sizing=\"large\">\n        <Card.Header>LARGE</Card.Header>\n\n        <Card.Section>\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non.\n            </Text>\n        </Card.Section>\n    </Card.Container>\n\n    <Card.Container sizing=\"huge\">\n        <Card.Header>HUGE</Card.Header>\n\n        <Card.Section>\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non.\n            </Text>\n        </Card.Section>\n    </Card.Container>\n\n    <Card.Container sizing=\"massive\">\n        <Card.Header>MASSIVE</Card.Header>\n\n        <Card.Section>\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non.\n            </Text>\n        </Card.Section>\n    </Card.Container>\n</Stack.Container>\n\n<style>\n    :global(.card-sizing > .card) {\n        max-width: 35ch;\n    }\n</style>"},{"identifier":"/playground?snippet=carousel-orientation","title":"Carousel Orientation","text":"<script>\n    import {\n        Box,\n        Carousel,\n        Center,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Carousel.Container\n    class=\"carousel-orientation\"\n    orientation=\"vertical\"\n>\n    <Carousel.Section>\n        <Box palette=\"negative\">\n            <Center height=\"100\">300 x 200</Center>\n        </Box>\n    </Carousel.Section>\n\n    <Carousel.Section>\n        <Box palette=\"affirmative\">\n            <Center height=\"100\">300 x 200</Center>\n        </Box>\n    </Carousel.Section>\n\n    <Carousel.Section>\n        <Box palette=\"alert\">\n            <Center height=\"100\">300 x 200</Center>\n        </Box>\n    </Carousel.Section>\n</Carousel.Container>\n\n<style>\n    :global(.carousel-orientation) {\n        width: 300px;\n        height: 200px;\n    }\n</style>"},{"identifier":"/playground?snippet=carousel-preview","title":"Carousel Preview","text":"<script>\n    import {\n        Box,\n        Carousel,\n        Center,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Carousel.Container class=\"carousel-preview\">\n    <Carousel.Section>\n        <Box palette=\"negative\">\n            <Center height=\"100\">300 x 200</Center>\n        </Box>\n    </Carousel.Section>\n\n    <Carousel.Section>\n        <Box palette=\"affirmative\">\n            <Center height=\"100\">300 x 200</Center>\n        </Box>\n    </Carousel.Section>\n\n    <Carousel.Section>\n        <Box palette=\"alert\">\n            <Center height=\"100\">300 x 200</Center>\n        </Box>\n    </Carousel.Section>\n</Carousel.Container>\n\n<style>\n    :global(.carousel-preview) {\n        width: 300px;\n        height: 200px;\n    }\n</style>"},{"identifier":"/playground?snippet=carousel-spacing","title":"Carousel Spacing","text":"<script>\n    import {\n        Box,\n        Carousel,\n        Center,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    class=\"carousel-spacing\"\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n\n        <Carousel.Container>\n            <Carousel.Section>\n                <Box palette=\"negative\">\n                    <Center height=\"100\">\n                        300 x 200\n                    </Center>\n                </Box>\n            </Carousel.Section>\n\n            <Carousel.Section>\n                <Box palette=\"affirmative\">\n                    <Center height=\"100\">\n                        300 x 200\n                    </Center>\n                </Box>\n            </Carousel.Section>\n\n            <Carousel.Section>\n                <Box palette=\"alert\">\n                    <Center height=\"100\">\n                        300 x 200\n                    </Center>\n                </Box>\n            </Carousel.Section>\n        </Carousel.Container>\n    </div>\n\n    <div>\n        <Text is=\"strong\">NANO</Text>\n\n        <Carousel.Container spacing=\"nano\">\n            <Carousel.Section>\n                <Box palette=\"negative\">\n                    <Center height=\"100\">\n                        300 x 200\n                    </Center>\n                </Box>\n            </Carousel.Section>\n\n            <Carousel.Section>\n                <Box palette=\"affirmative\">\n                    <Center height=\"100\">\n                        300 x 200\n                    </Center>\n                </Box>\n            </Carousel.Section>\n\n            <Carousel.Section>\n                <Box palette=\"alert\">\n                    <Center height=\"100\">\n                        300 x 200\n                    </Center>\n                </Box>\n            </Carousel.Section>\n        </Carousel.Container>\n    </div>\n\n    <div>\n        <Text is=\"strong\">TINY</Text>\n\n        <Carousel.Container spacing=\"tiny\">\n            <Carousel.Section>\n                <Box palette=\"negative\">\n                    <Center height=\"100\">\n                        300 x 200\n                    </Center>\n                </Box>\n            </Carousel.Section>\n\n            <Carousel.Section>\n                <Box palette=\"affirmative\">\n                    <Center height=\"100\">\n                        300 x 200\n                    </Center>\n                </Box>\n            </Carousel.Section>\n\n            <Carousel.Section>\n                <Box palette=\"alert\">\n                    <Center height=\"100\">\n                        300 x 200\n                    </Center>\n                </Box>\n            </Carousel.Section>\n        </Carousel.Container>\n    </div>\n\n    <div>\n        <Text is=\"strong\">SMALL</Text>\n\n        <Carousel.Container spacing=\"small\">\n            <Carousel.Section>\n                <Box palette=\"negative\">\n                    <Center height=\"100\">\n                        300 x 200\n                    </Center>\n                </Box>\n            </Carousel.Section>\n\n            <Carousel.Section>\n                <Box palette=\"affirmative\">\n                    <Center height=\"100\">\n                        300 x 200\n                    </Center>\n                </Box>\n            </Carousel.Section>\n\n            <Carousel.Section>\n                <Box palette=\"alert\">\n                    <Center height=\"100\">\n                        300 x 200\n                    </Center>\n                </Box>\n            </Carousel.Section>\n        </Carousel.Container>\n    </div>\n\n    <div>\n        <Text is=\"strong\">MEDIUM</Text>\n\n        <Carousel.Container spacing=\"medium\">\n            <Carousel.Section>\n                <Box palette=\"negative\">\n                    <Center height=\"100\">\n                        300 x 200\n                    </Center>\n                </Box>\n            </Carousel.Section>\n\n            <Carousel.Section>\n                <Box palette=\"affirmative\">\n                    <Center height=\"100\">\n                        300 x 200\n                    </Center>\n                </Box>\n            </Carousel.Section>\n\n            <Carousel.Section>\n                <Box palette=\"alert\">\n                    <Center height=\"100\">\n                        300 x 200\n                    </Center>\n                </Box>\n            </Carousel.Section>\n        </Carousel.Container>\n    </div>\n\n    <div>\n        <Text is=\"strong\">LARGE</Text>\n\n        <Carousel.Container spacing=\"large\">\n            <Carousel.Section>\n                <Box palette=\"negative\">\n                    <Center height=\"100\">\n                        300 x 200\n                    </Center>\n                </Box>\n            </Carousel.Section>\n\n            <Carousel.Section>\n                <Box palette=\"affirmative\">\n                    <Center height=\"100\">\n                        300 x 200\n                    </Center>\n                </Box>\n            </Carousel.Section>\n\n            <Carousel.Section>\n                <Box palette=\"alert\">\n                    <Center height=\"100\">\n                        300 x 200\n                    </Center>\n                </Box>\n            </Carousel.Section>\n        </Carousel.Container>\n    </div>\n\n    <div>\n        <Text is=\"strong\">HUGE</Text>\n\n        <Carousel.Container spacing=\"huge\">\n            <Carousel.Section>\n                <Box palette=\"negative\">\n                    <Center height=\"100\">\n                        300 x 200\n                    </Center>\n                </Box>\n            </Carousel.Section>\n\n            <Carousel.Section>\n                <Box palette=\"affirmative\">\n                    <Center height=\"100\">\n                        300 x 200\n                    </Center>\n                </Box>\n            </Carousel.Section>\n\n            <Carousel.Section>\n                <Box palette=\"alert\">\n                    <Center height=\"100\">\n                        300 x 200\n                    </Center>\n                </Box>\n            </Carousel.Section>\n        </Carousel.Container>\n    </div>\n\n    <div>\n        <Text is=\"strong\">MASSIVE</Text>\n\n        <Carousel.Container spacing=\"massive\">\n            <Carousel.Section>\n                <Box palette=\"negative\">\n                    <Center height=\"100\">\n                        300 x 200\n                    </Center>\n                </Box>\n            </Carousel.Section>\n\n            <Carousel.Section>\n                <Box palette=\"affirmative\">\n                    <Center height=\"100\">\n                        300 x 200\n                    </Center>\n                </Box>\n            </Carousel.Section>\n\n            <Carousel.Section>\n                <Box palette=\"alert\">\n                    <Center height=\"100\">\n                        300 x 200\n                    </Center>\n                </Box>\n            </Carousel.Section>\n        </Carousel.Container>\n    </div>\n</Stack.Container>\n\n<style>\n    :global(.carousel-spacing) :global(.carousel) {\n        width: 300px;\n        height: 200px;\n    }\n</style>"},{"identifier":"/playground?snippet=center-preview","title":"Center Preview","text":"<script>\n    import {Box, Center} from \"@kahi-ui/framework\";\n</script>\n\n<Box palette=\"inverse\">\n    <Center class=\"center-preview\">\n        This text is centered!\n    </Center>\n</Box>\n\n<style>\n    :global(.center-preview) {\n        height: 100px;\n    }\n</style>"},{"identifier":"/playground?snippet=check-flush","title":"Check Flush","text":"<script>\n    import {\n        Check,\n        Menu,\n        Spacer,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Menu.Container>\n    <Menu.Heading>Filter</Menu.Heading>\n\n    <Menu.Label for=\"check-flush-cpus\">\n        CPUs\n        <Spacer />\n        <Check\n            value=\"cpus\"\n            palette=\"accent\"\n            variation=\"flush\"\n        />\n    </Menu.Label>\n\n    <Menu.Label for=\"check-flush-hard-drives\">\n        Hard Drives\n        <Spacer />\n        <Check\n            value=\"hard-drives\"\n            palette=\"accent\"\n            variation=\"flush\"\n            state\n        />\n    </Menu.Label>\n\n    <Menu.Label for=\"check-flush-solid-state-drives\">\n        Solid State Drives\n        <Spacer />\n        <Check\n            value=\"solid-state-drives\"\n            palette=\"accent\"\n            variation=\"flush\"\n        />\n    </Menu.Label>\n</Menu.Container>"},{"identifier":"/playground?snippet=check-palette","title":"Check Palette","text":"<script>\n    import {\n        Check,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n        <br />\n        <Check />\n    </div>\n\n    <div>\n        <Text is=\"strong\">ACCENT</Text>\n        <br />\n        <Check palette=\"accent\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">NEUTRAL</Text>\n        <br />\n        <Check palette=\"neutral\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">DARK</Text>\n        <br />\n        <Check palette=\"dark\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">LIGHT</Text>\n        <br />\n        <Check palette=\"light\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">ALERT</Text>\n        <br />\n        <Check palette=\"alert\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">AFFIRMATIVE</Text>\n        <br />\n        <Check palette=\"affirmative\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">INFORMATIVE</Text>\n        <br />\n        <Check palette=\"informative\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">NEGATIVE</Text>\n        <br />\n        <Check palette=\"negative\" />\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=check-preview","title":"Check Preview","text":"<script>\n    import {\n        Check,\n        Form,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n\n    let logic_state = [\"cheese\", \"onion\"];\n</script>\n\n<Text is=\"strong\">\n    Select Pizza Toppings\n    <Text is=\"sup\">{logic_state}</Text>\n</Text>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"small\"\n    variation=\"wrap\"\n    margin_top=\"small\"\n>\n    <Form.Group name=\"check-preview\" bind:logic_state>\n        <Check\n            id=\"check-preview-cheese\"\n            palette=\"accent\"\n            sizing=\"tiny\"\n            value=\"cheese\"\n        >\n            Cheese\n        </Check>\n\n        <Check\n            id=\"check-preview-pepperoni\"\n            palette=\"accent\"\n            sizing=\"tiny\"\n            value=\"pepperoni\"\n        >\n            Pepperoni\n        </Check>\n\n        <Check\n            id=\"check-preview-onion\"\n            palette=\"accent\"\n            sizing=\"tiny\"\n            value=\"onion\"\n        >\n            Onion\n        </Check>\n\n        <Check\n            id=\"check-preview-pineapple\"\n            palette=\"accent\"\n            sizing=\"tiny\"\n            value=\"pineapple\"\n        >\n            Pineapple\n        </Check>\n    </Form.Group>\n</Stack.Container>"},{"identifier":"/playground?snippet=check-sizing","title":"Check Sizing","text":"<script>\n    import {\n        Check,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n        <br />\n        <Check />\n    </div>\n\n    <div>\n        <Text is=\"strong\">NANO</Text>\n        <br />\n        <Check sizing=\"nano\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">TINY</Text>\n        <br />\n        <Check sizing=\"tiny\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">SMALL</Text>\n        <br />\n        <Check sizing=\"small\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">MEDIUM</Text>\n        <br />\n        <Check sizing=\"medium\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">LARGE</Text>\n        <br />\n        <Check sizing=\"large\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">HUGE</Text>\n        <br />\n        <Check sizing=\"huge\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">MASSIVE</Text>\n        <br />\n        <Check sizing=\"massive\" />\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=check-states","title":"Check States","text":"<script>\n    import {\n        Check,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n        <br />\n        <Check />\n    </div>\n\n    <div>\n        <Text is=\"strong\">STATE</Text>\n        <br />\n        <Check state />\n    </div>\n\n    <div>\n        <Text is=\"strong\">ACTIVE NO-STATE</Text>\n        <br />\n        <Check active />\n    </div>\n\n    <div>\n        <Text is=\"strong\">ACTIVE STATE</Text>\n        <br />\n        <Check active state />\n    </div>\n\n    <div>\n        <Text is=\"strong\">DISABLED NO-STATE</Text>\n        <br />\n        <Check disabled />\n    </div>\n\n    <div>\n        <Text is=\"strong\">DISABLED STATE</Text>\n        <br />\n        <Check disabled state />\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=click_inside-ignore","title":"click_inside Ignore","text":"<script>\n    import {\n        Box,\n        Button,\n        click_inside,\n    } from \"@kahi-ui/framework\";\n\n    let clicked = false;\n</script>\n\n<Box\n    palette={clicked ? \"affirmative\" : \"negative\"}\n    padding=\"small\"\n    actions={[\n        [\n            click_inside,\n            {\n                ignore: \"button\",\n                on_click_inside: () =>\n                    (clicked = true),\n            },\n        ],\n    ]}\n>\n    {clicked\n        ? \"I was clicked inside!\"\n        : \"I am currently not clicked...\"}\n    <Button>This will not trigger the action!</Button>\n</Box>"},{"identifier":"/playground?snippet=click_inside-preview","title":"click_inside Preview","text":"<script>\n    import {\n        Box,\n        click_inside,\n    } from \"@kahi-ui/framework\";\n\n    let clicked = false;\n</script>\n\n<Box\n    palette={clicked ? \"affirmative\" : \"negative\"}\n    padding=\"small\"\n    actions={[\n        [\n            click_inside,\n            {\n                on_click_inside: () =>\n                    (clicked = true),\n            },\n        ],\n    ]}\n>\n    {clicked\n        ? \"I was clicked inside!\"\n        : \"I am currently not clicked...\"}\n</Box>"},{"identifier":"/playground?snippet=click_outside-ignore","title":"click_outside Ignore","text":"<script>\n    import {\n        Box,\n        Button,\n        click_outside,\n    } from \"@kahi-ui/framework\";\n\n    let clicked = false;\n</script>\n\n<Button>This will not trigger the action!</Button>\n\n<Box\n    palette={clicked ? \"affirmative\" : \"negative\"}\n    padding=\"small\"\n    actions={[\n        [\n            click_outside,\n            {\n                ignore: \"button\",\n                on_click_outside: () =>\n                    (clicked = false),\n            },\n        ],\n    ]}\n    on:click={() => (clicked = true)}\n>\n    {clicked\n        ? \"I was clicked inside!\"\n        : \"I am currently not clicked...\"}\n</Box>"},{"identifier":"/playground?snippet=click_outside-preview","title":"click_outside Preview","text":"<script>\n    import {\n        Box,\n        click_outside,\n    } from \"@kahi-ui/framework\";\n\n    let clicked = false;\n</script>\n\n<Box\n    palette={clicked ? \"affirmative\" : \"negative\"}\n    padding=\"small\"\n    actions={[\n        [\n            click_outside,\n            {\n                on_click_outside: () =>\n                    (clicked = false),\n            },\n        ],\n    ]}\n    on:click={() => (clicked = true)}\n>\n    {clicked\n        ? \"I was clicked inside!\"\n        : \"I am currently not clicked...\"}\n</Box>"},{"identifier":"/playground?snippet=clickable-anchor","title":"Clickable Anchor","text":"<script>\n    import {\n        Badge,\n        Button,\n        Card,\n        Clickable,\n        Spacer,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Clickable.Container>\n    <Card.Container style=\"max-width:25rem;\">\n        <Card.Figure>\n            <img src={IMAGE_BACKGROUND} />\n        </Card.Figure>\n\n        <Card.Header>\n            <Clickable.Anchor href=\"#\">\n                Ocean Rockies\n            </Clickable.Anchor>\n\n            <Spacer />\n            <Badge palette=\"affirmative\">\n                AVAILABLE\n            </Badge>\n        </Card.Header>\n\n        <Card.Section>\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non. Orci varius natoque\n                penatibus et magnis dis parturient\n                montes, nascetur ridiculus mus.\n            </Text>\n        </Card.Section>\n\n        <Card.Footer>\n            <Button palette=\"accent\">\n                Book Flight\n            </Button>\n        </Card.Footer>\n    </Card.Container>\n</Clickable.Container>"},{"identifier":"/playground?snippet=clickable-label","title":"Clickable Label","text":"<script>\n    import {\n        Clickable,\n        Switch,\n        Text,\n        Tile,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Clickable.Container>\n    <Tile.Container width=\"content-max\">\n        <Tile.Section>\n            <Tile.Header>Remember Login?</Tile.Header>\n\n            <Text>\n                <Text is=\"small\">\n                    Your session will be saved to your\n                    Browser.\n                </Text>\n            </Text>\n        </Tile.Section>\n\n        <Tile.Footer>\n            <Clickable.Label for=\"clickable-label\">\n                <Switch\n                    palette=\"affirmative\"\n                    sizing=\"medium\"\n                />\n            </Clickable.Label>\n        </Tile.Footer>\n    </Tile.Container>\n</Clickable.Container>"},{"identifier":"/playground?snippet=code-block","title":"Code Block","text":"<script>\n    import {Code} from \"@kahi-ui/framework\";\n</script>\n\n<Code is=\"pre\">\nimport math from \"a-math-library\";\n\nconst result = math.add(1, 1);\nconsole.log(\"Our value is:\", result);\n</Code>"},{"identifier":"/playground?snippet=code-palette","title":"Code Palette","text":"<script>\n    import {\n        Code,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container alignment_x=\"left\" spacing=\"medium\">\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n\n        <br />\n        <Code>\n            import * as Kahi from \"@kahi-ui/framework\";\n        </Code>\n    </div>\n\n    <div>\n        <Text is=\"strong\">ACCENT</Text>\n\n        <br />\n        <Code palette=\"accent\">\n            import * as Kahi from \"@kahi-ui/framework\";\n        </Code>\n    </div>\n\n    <div>\n        <Text is=\"strong\">NEUTRAL</Text>\n\n        <br />\n        <Code palette=\"neutral\">\n            import * as Kahi from \"@kahi-ui/framework\";\n        </Code>\n    </div>\n\n    <div>\n        <Text is=\"strong\">DARK</Text>\n\n        <br />\n        <Code palette=\"dark\">\n            import * as Kahi from \"@kahi-ui/framework\";\n        </Code>\n    </div>\n\n    <div>\n        <Text is=\"strong\">LIGHT</Text>\n\n        <br />\n        <Code palette=\"light\">\n            import * as Kahi from \"@kahi-ui/framework\";\n        </Code>\n    </div>\n\n    <div>\n        <Text is=\"strong\">ALERT</Text>\n\n        <br />\n        <Code palette=\"alert\">\n            import * as Kahi from \"@kahi-ui/framework\";\n        </Code>\n    </div>\n\n    <div>\n        <Text is=\"strong\">AFFIRMATIVE</Text>\n\n        <br />\n        <Code palette=\"affirmative\">\n            import * as Kahi from \"@kahi-ui/framework\";\n        </Code>\n    </div>\n\n    <div>\n        <Text is=\"strong\">INFORMATIVE</Text>\n\n        <br />\n        <Code palette=\"informative\">\n            import * as Kahi from \"@kahi-ui/framework\";\n        </Code>\n    </div>\n\n    <div>\n        <Text is=\"strong\">NEGATIVE</Text>\n\n        <br />\n        <Code palette=\"negative\">\n            import * as Kahi from \"@kahi-ui/framework\";\n        </Code>\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=code-preview","title":"Code Preview","text":"<script>\n    import {Code} from \"@kahi-ui/framework\";\n</script>\n\n<Code>\n    import * as Kahi from \"@kahi-ui/framework\";\n</Code>"},{"identifier":"/playground?snippet=container-elements","title":"Container Elements","text":"<script>\n    import {\n        Container,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container spacing=\"medium\">\n    <Container is=\"article\">\n        <Text is=\"strong\">ARTICLE</Text>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </Container>\n\n    <Container is=\"div\">\n        <Text is=\"strong\">DIV</Text>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </Container>\n\n    <Container is=\"main\">\n        <Text is=\"strong\">MAIN</Text>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </Container>\n</Stack.Container>"},{"identifier":"/playground?snippet=container-preview","title":"Container Preview","text":"<script>\n    import {Container, Text} from \"@kahi-ui/framework\";\n</script>\n\n<Container>\n    <Text>\n        Lorem ipsum dolor sit amet, consectetur\n        adipiscing elit. Proin et consectetur orci.\n        Curabitur a egestas turpis, vitae convallis\n        sapien. Sed pellentesque rutrum tellus, in\n        iaculis dolor tincidunt non. Orci varius\n        natoque penatibus et magnis dis parturient\n        montes, nascetur ridiculus mus.\n    </Text>\n</Container>"},{"identifier":"/playground?snippet=contents-preview","title":"Contents Preview","text":"<script>\n    import {Box} from \"@kahi-ui/framework\";\n</script>\n\n<Box palette=\"accent\" contents={[\"mobile\", \"tablet\"]}>\n    I have no styling on Mobile / Tablet Viewports.\n</Box>\n\n<Box\n    palette=\"affirmative\"\n    contents={[\"desktop\", \"widescreen\"]}\n>\n    I have no styling on Desktop / Widescreen\n    Viewports.\n</Box>"},{"identifier":"/playground?snippet=custom-properties-css","title":"Custom Properties CSS","text":"<script>\n    import {Button} from \"@kahi-ui/framework\";\n</script>\n\n<Button class=\"custom-properties-class\">\n    I was customized via a class!\n</Button>\n\n<style>\n    :global(.custom-properties-class) {\n        --button-padding-y: 5;\n    }\n</style>"},{"identifier":"/playground?snippet=custom-properties-style","title":"Custom Properties Style","text":"<script>\n    import {Button} from \"@kahi-ui/framework\";\n</script>\n\n<Button style=\"--button-padding-y:5;\">\n    I was customized via style!\n</Button>"},{"identifier":"/playground?snippet=darkmode-light-mode","title":"darkmode Light Mode","text":"<script>\n    import {Text, lightmode} from \"@kahi-ui/framework\";\n\n    const lightmode_store = lightmode();\n</script>\n\n<Text>\n    {$lightmode_store\n        ? \"Lightmode is enabled!\"\n        : \"Lightmode is disabled!\"}\n</Text>"},{"identifier":"/playground?snippet=darkmode-preview","title":"darkmode Preview","text":"<script>\n    import {Text, darkmode} from \"@kahi-ui/framework\";\n\n    const darkmode_store = darkmode();\n</script>\n\n<Text>\n    {$darkmode_store\n        ? \"Darkmode is enabled!\"\n        : \"Lightmode is enabled!\"}\n</Text>"},{"identifier":"/playground?snippet=dataselect-item-disabled","title":"DataSelect Item Disabled","text":"<script>\n    import {DataSelect} from \"@kahi-ui/framework\";\n\n    const ITEMS = [\n        {text: \"Alabama\", id: \"alabama\"},\n        {text: \"Alaska\", id: \"alaska\"},\n        {text: \"Arizona\", id: \"arizona\"},\n        {text: \"Arkansas\", id: \"arkansas\"},\n        {text: \"California\", id: \"california\"},\n        {text: \"Colorado\", id: \"colorado\"},\n        {text: \"Connecticut\", id: \"connecticut\"},\n        {text: \"Delaware\", id: \"delaware\"},\n        {text: \"Florida\", id: \"florida\"},\n        {text: \"Georgia\", id: \"georgia\"},\n        {text: \"Hawaii\", id: \"hawaii\"},\n        {text: \"Idaho\", id: \"idaho\"},\n        {text: \"Illinois\", id: \"illinois\"},\n        {text: \"Indiana\", id: \"Indiana\"},\n        {text: \"Iowa\", id: \"iowa\", palette: \"accent\"},\n        {text: \"Kansas\", id: \"kansas\"},\n        {text: \"Kentucky\", id: \"kentucky\"},\n        {text: \"Louisiana\", id: \"louisiana\"},\n        {text: \"Maine\", id: \"maine\"},\n        {text: \"Maryland\", id: \"maryland\"},\n        {text: \"Massachusetts\", id: \"massachusetts\"},\n        {text: \"Michigan\", id: \"michigan\"},\n        {text: \"Minnesota\", id: \"minnesota\"},\n        {text: \"Mississippi\", id: \"mississippi\"},\n        {text: \"Missouri\", id: \"missouri\"},\n        {text: \"Montana\", id: \"montana\"},\n        {text: \"Nebraska\", id: \"nebraska\"},\n        {text: \"Nevada\", id: \"nevada\"},\n        {text: \"New Hampshire\", id: \"new-hampshire\"},\n        {text: \"New Jersey\", id: \"new-jersey\"},\n        {text: \"New Mexico\", id: \"new-mexico\"},\n        {text: \"New York\", id: \"new-york\"},\n        {text: \"North Carolina\", id: \"north-carolina\"},\n        {text: \"North Dakota\", id: \"north-dakota\"},\n        {text: \"Ohio\", id: \"ohio\"},\n        {text: \"Oklahoma\", id: \"oklahoma\"},\n        {text: \"Oregon\", id: \"oregon\"},\n        {text: \"Pennsylvania\", id: \"pennsylvania\"},\n        {text: \"Rhode Island\", id: \"rhode-island\"},\n        {text: \"South Carolina\", id: \"south-carolina\"},\n        {text: \"South Dakota\", id: \"south-dakota\"},\n        {text: \"Tennessee\", id: \"tennessee\"},\n        {text: \"Texas\", id: \"texas\"},\n        {text: \"Utah\", id: \"utah\"},\n        {text: \"Vermont\", id: \"vermont\"},\n        {text: \"Virginia\", id: \"virginia\"},\n        {text: \"Washington\", id: \"washington\"},\n        {text: \"West Virginia\", id: \"west-virginia\"},\n        {text: \"Wisconsin\", id: \"wisconsin\"},\n        {text: \"Wyoming\", id: \"wyoming\"},\n    ];\n</script>\n\n<DataSelect\n    items={ITEMS.map((item, index) => {\n        return {...item, disabled: index % 5 === 0};\n    })}\n    logic_name=\"dataselect-item-disabled\"\n    placeholder=\"Select a US State...\"\n/>"},{"identifier":"/playground?snippet=dataselect-item-palette","title":"DataSelect Item Palette","text":"<script>\n    import {DataSelect} from \"@kahi-ui/framework\";\n\n    const ITEMS = [\n        {text: \"Alabama\", id: \"alabama\"},\n        {text: \"Alaska\", id: \"alaska\"},\n        {text: \"Arizona\", id: \"arizona\"},\n        {text: \"Arkansas\", id: \"arkansas\"},\n        {text: \"California\", id: \"california\"},\n        {text: \"Colorado\", id: \"colorado\"},\n        {text: \"Connecticut\", id: \"connecticut\"},\n        {text: \"Delaware\", id: \"delaware\"},\n        {text: \"Florida\", id: \"florida\"},\n        {text: \"Georgia\", id: \"georgia\"},\n        {text: \"Hawaii\", id: \"hawaii\"},\n        {text: \"Idaho\", id: \"idaho\"},\n        {text: \"Illinois\", id: \"illinois\"},\n        {text: \"Indiana\", id: \"Indiana\"},\n        {text: \"Iowa\", id: \"iowa\", palette: \"accent\"},\n        {text: \"Kansas\", id: \"kansas\"},\n        {text: \"Kentucky\", id: \"kentucky\"},\n        {text: \"Louisiana\", id: \"louisiana\"},\n        {text: \"Maine\", id: \"maine\"},\n        {text: \"Maryland\", id: \"maryland\"},\n        {text: \"Massachusetts\", id: \"massachusetts\"},\n        {text: \"Michigan\", id: \"michigan\"},\n        {text: \"Minnesota\", id: \"minnesota\"},\n        {text: \"Mississippi\", id: \"mississippi\"},\n        {text: \"Missouri\", id: \"missouri\"},\n        {text: \"Montana\", id: \"montana\"},\n        {text: \"Nebraska\", id: \"nebraska\"},\n        {text: \"Nevada\", id: \"nevada\"},\n        {text: \"New Hampshire\", id: \"new-hampshire\"},\n        {text: \"New Jersey\", id: \"new-jersey\"},\n        {text: \"New Mexico\", id: \"new-mexico\"},\n        {text: \"New York\", id: \"new-york\"},\n        {text: \"North Carolina\", id: \"north-carolina\"},\n        {text: \"North Dakota\", id: \"north-dakota\"},\n        {text: \"Ohio\", id: \"ohio\"},\n        {text: \"Oklahoma\", id: \"oklahoma\"},\n        {text: \"Oregon\", id: \"oregon\"},\n        {text: \"Pennsylvania\", id: \"pennsylvania\"},\n        {text: \"Rhode Island\", id: \"rhode-island\"},\n        {text: \"South Carolina\", id: \"south-carolina\"},\n        {text: \"South Dakota\", id: \"south-dakota\"},\n        {text: \"Tennessee\", id: \"tennessee\"},\n        {text: \"Texas\", id: \"texas\"},\n        {text: \"Utah\", id: \"utah\"},\n        {text: \"Vermont\", id: \"vermont\"},\n        {text: \"Virginia\", id: \"virginia\"},\n        {text: \"Washington\", id: \"washington\"},\n        {text: \"West Virginia\", id: \"west-virginia\"},\n        {text: \"Wisconsin\", id: \"wisconsin\"},\n        {text: \"Wyoming\", id: \"wyoming\"},\n    ];\n</script>\n\n<DataSelect\n    items={ITEMS.map((item, index) => {\n        return {\n            ...item,\n            palette:\n                index % 5 === 0\n                    ? \"negative\"\n                    : item.palette,\n        };\n    })}\n    logic_name=\"dataselect-item-palette\"\n    logic_state=\"alabama\"\n    placeholder=\"Select a US State...\"\n/>"},{"identifier":"/playground?snippet=dataselect-logic-state","title":"DataSelect Logic State","text":"<script>\n    import {DataSelect} from \"@kahi-ui/framework\";\n\n    const ITEMS = [\n        {text: \"Alabama\", id: \"alabama\"},\n        {text: \"Alaska\", id: \"alaska\"},\n        {text: \"Arizona\", id: \"arizona\"},\n        {text: \"Arkansas\", id: \"arkansas\"},\n        {text: \"California\", id: \"california\"},\n        {text: \"Colorado\", id: \"colorado\"},\n        {text: \"Connecticut\", id: \"connecticut\"},\n        {text: \"Delaware\", id: \"delaware\"},\n        {text: \"Florida\", id: \"florida\"},\n        {text: \"Georgia\", id: \"georgia\"},\n        {text: \"Hawaii\", id: \"hawaii\"},\n        {text: \"Idaho\", id: \"idaho\"},\n        {text: \"Illinois\", id: \"illinois\"},\n        {text: \"Indiana\", id: \"Indiana\"},\n        {text: \"Iowa\", id: \"iowa\", palette: \"accent\"},\n        {text: \"Kansas\", id: \"kansas\"},\n        {text: \"Kentucky\", id: \"kentucky\"},\n        {text: \"Louisiana\", id: \"louisiana\"},\n        {text: \"Maine\", id: \"maine\"},\n        {text: \"Maryland\", id: \"maryland\"},\n        {text: \"Massachusetts\", id: \"massachusetts\"},\n        {text: \"Michigan\", id: \"michigan\"},\n        {text: \"Minnesota\", id: \"minnesota\"},\n        {text: \"Mississippi\", id: \"mississippi\"},\n        {text: \"Missouri\", id: \"missouri\"},\n        {text: \"Montana\", id: \"montana\"},\n        {text: \"Nebraska\", id: \"nebraska\"},\n        {text: \"Nevada\", id: \"nevada\"},\n        {text: \"New Hampshire\", id: \"new-hampshire\"},\n        {text: \"New Jersey\", id: \"new-jersey\"},\n        {text: \"New Mexico\", id: \"new-mexico\"},\n        {text: \"New York\", id: \"new-york\"},\n        {text: \"North Carolina\", id: \"north-carolina\"},\n        {text: \"North Dakota\", id: \"north-dakota\"},\n        {text: \"Ohio\", id: \"ohio\"},\n        {text: \"Oklahoma\", id: \"oklahoma\"},\n        {text: \"Oregon\", id: \"oregon\"},\n        {text: \"Pennsylvania\", id: \"pennsylvania\"},\n        {text: \"Rhode Island\", id: \"rhode-island\"},\n        {text: \"South Carolina\", id: \"south-carolina\"},\n        {text: \"South Dakota\", id: \"south-dakota\"},\n        {text: \"Tennessee\", id: \"tennessee\"},\n        {text: \"Texas\", id: \"texas\"},\n        {text: \"Utah\", id: \"utah\"},\n        {text: \"Vermont\", id: \"vermont\"},\n        {text: \"Virginia\", id: \"virginia\"},\n        {text: \"Washington\", id: \"washington\"},\n        {text: \"West Virginia\", id: \"west-virginia\"},\n        {text: \"Wisconsin\", id: \"wisconsin\"},\n        {text: \"Wyoming\", id: \"wyoming\"},\n    ];\n</script>\n\n<DataSelect\n    items={ITEMS}\n    logic_name=\"dataselect-logic-state\"\n    logic_state={[\"oregon\", \"delaware\"]}\n    placeholder=\"Select multiple US States...\"\n    multiple\n/>"},{"identifier":"/playground?snippet=dataselect-maximum","title":"DataSelect Maximum","text":"<script>\n    import {DataSelect} from \"@kahi-ui/framework\";\n\n    const ITEMS = [\n        {text: \"Alabama\", id: \"alabama\"},\n        {text: \"Alaska\", id: \"alaska\"},\n        {text: \"Arizona\", id: \"arizona\"},\n        {text: \"Arkansas\", id: \"arkansas\"},\n        {text: \"California\", id: \"california\"},\n        {text: \"Colorado\", id: \"colorado\"},\n        {text: \"Connecticut\", id: \"connecticut\"},\n        {text: \"Delaware\", id: \"delaware\"},\n        {text: \"Florida\", id: \"florida\"},\n        {text: \"Georgia\", id: \"georgia\"},\n        {text: \"Hawaii\", id: \"hawaii\"},\n        {text: \"Idaho\", id: \"idaho\"},\n        {text: \"Illinois\", id: \"illinois\"},\n        {text: \"Indiana\", id: \"Indiana\"},\n        {text: \"Iowa\", id: \"iowa\", palette: \"accent\"},\n        {text: \"Kansas\", id: \"kansas\"},\n        {text: \"Kentucky\", id: \"kentucky\"},\n        {text: \"Louisiana\", id: \"louisiana\"},\n        {text: \"Maine\", id: \"maine\"},\n        {text: \"Maryland\", id: \"maryland\"},\n        {text: \"Massachusetts\", id: \"massachusetts\"},\n        {text: \"Michigan\", id: \"michigan\"},\n        {text: \"Minnesota\", id: \"minnesota\"},\n        {text: \"Mississippi\", id: \"mississippi\"},\n        {text: \"Missouri\", id: \"missouri\"},\n        {text: \"Montana\", id: \"montana\"},\n        {text: \"Nebraska\", id: \"nebraska\"},\n        {text: \"Nevada\", id: \"nevada\"},\n        {text: \"New Hampshire\", id: \"new-hampshire\"},\n        {text: \"New Jersey\", id: \"new-jersey\"},\n        {text: \"New Mexico\", id: \"new-mexico\"},\n        {text: \"New York\", id: \"new-york\"},\n        {text: \"North Carolina\", id: \"north-carolina\"},\n        {text: \"North Dakota\", id: \"north-dakota\"},\n        {text: \"Ohio\", id: \"ohio\"},\n        {text: \"Oklahoma\", id: \"oklahoma\"},\n        {text: \"Oregon\", id: \"oregon\"},\n        {text: \"Pennsylvania\", id: \"pennsylvania\"},\n        {text: \"Rhode Island\", id: \"rhode-island\"},\n        {text: \"South Carolina\", id: \"south-carolina\"},\n        {text: \"South Dakota\", id: \"south-dakota\"},\n        {text: \"Tennessee\", id: \"tennessee\"},\n        {text: \"Texas\", id: \"texas\"},\n        {text: \"Utah\", id: \"utah\"},\n        {text: \"Vermont\", id: \"vermont\"},\n        {text: \"Virginia\", id: \"virginia\"},\n        {text: \"Washington\", id: \"washington\"},\n        {text: \"West Virginia\", id: \"west-virginia\"},\n        {text: \"Wisconsin\", id: \"wisconsin\"},\n        {text: \"Wyoming\", id: \"wyoming\"},\n    ];\n</script>\n\n<DataSelect\n    items={ITEMS}\n    logic_name=\"dataselect-max-one\"\n    placeholder=\"Select one (1) US State...\"\n    max={1}\n    multiple\n/>\n\n<DataSelect\n    items={ITEMS}\n    logic_name=\"dataselect-max-five\"\n    placeholder=\"Select five (5) US States...\"\n    max={5}\n    multiple\n/>"},{"identifier":"/playground?snippet=dataselect-multiple","title":"DataSelect Multiple","text":"<script>\n    import {DataSelect} from \"@kahi-ui/framework\";\n\n    const ITEMS = [\n        {\n            text: \"Alabama\",\n            id: \"alabama\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Alaska\",\n            id: \"alaska\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Arizona\",\n            id: \"arizona\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Arkansas\",\n            id: \"arkansas\",\n            palette: \"accent\",\n        },\n        {\n            text: \"California\",\n            id: \"california\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Colorado\",\n            id: \"colorado\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Connecticut\",\n            id: \"connecticut\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Delaware\",\n            id: \"delaware\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Florida\",\n            id: \"florida\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Georgia\",\n            id: \"georgia\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Hawaii\",\n            id: \"hawaii\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Idaho\",\n            id: \"idaho\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Illinois\",\n            id: \"illinois\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Indiana\",\n            id: \"Indiana\",\n            palette: \"accent\",\n        },\n        {text: \"Iowa\", id: \"iowa\", palette: \"accent\"},\n        {\n            text: \"Kansas\",\n            id: \"kansas\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Kentucky\",\n            id: \"kentucky\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Louisiana\",\n            id: \"louisiana\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Maine\",\n            id: \"maine\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Maryland\",\n            id: \"maryland\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Massachusetts\",\n            id: \"massachusetts\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Michigan\",\n            id: \"michigan\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Minnesota\",\n            id: \"minnesota\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Mississippi\",\n            id: \"mississippi\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Missouri\",\n            id: \"missouri\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Montana\",\n            id: \"montana\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Nebraska\",\n            id: \"nebraska\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Nevada\",\n            id: \"nevada\",\n            palette: \"accent\",\n        },\n        {\n            text: \"New Hampshire\",\n            id: \"new-hampshire\",\n            palette: \"accent\",\n        },\n        {\n            text: \"New Jersey\",\n            id: \"new-jersey\",\n            palette: \"accent\",\n        },\n        {\n            text: \"New Mexico\",\n            id: \"new-mexico\",\n            palette: \"accent\",\n        },\n        {\n            text: \"New York\",\n            id: \"new-york\",\n            palette: \"accent\",\n        },\n        {\n            text: \"North Carolina\",\n            id: \"north-carolina\",\n            palette: \"accent\",\n        },\n        {\n            text: \"North Dakota\",\n            id: \"north-dakota\",\n            palette: \"accent\",\n        },\n        {text: \"Ohio\", id: \"ohio\", palette: \"accent\"},\n        {\n            text: \"Oklahoma\",\n            id: \"oklahoma\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Oregon\",\n            id: \"oregon\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Pennsylvania\",\n            id: \"pennsylvania\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Rhode Island\",\n            id: \"rhode-island\",\n            palette: \"accent\",\n        },\n        {\n            text: \"South Carolina\",\n            id: \"south-carolina\",\n            palette: \"accent\",\n        },\n        {\n            text: \"South Dakota\",\n            id: \"south-dakota\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Tennessee\",\n            id: \"tennessee\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Texas\",\n            id: \"texas\",\n            palette: \"accent\",\n        },\n        {text: \"Utah\", id: \"utah\", palette: \"accent\"},\n        {\n            text: \"Vermont\",\n            id: \"vermont\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Virginia\",\n            id: \"virginia\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Washington\",\n            id: \"washington\",\n            palette: \"accent\",\n        },\n        {\n            text: \"West Virginia\",\n            id: \"west-virginia\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Wisconsin\",\n            id: \"wisconsin\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Wyoming\",\n            id: \"wyoming\",\n            palette: \"accent\",\n        },\n    ];\n</script>\n\n<DataSelect\n    items={ITEMS}\n    logic_name=\"dataselect-multiple\"\n    placeholder=\"Select multiple US States...\"\n    palette=\"accent\"\n    multiple\n/>"},{"identifier":"/playground?snippet=dataselect-palette","title":"DataSelect Palette","text":"<script>\n    import {\n        DataSelect,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n\n    const ITEMS = [\n        {text: \"Alabama\", id: \"alabama\"},\n        {text: \"Alaska\", id: \"alaska\"},\n        {text: \"Arizona\", id: \"arizona\"},\n        {text: \"Arkansas\", id: \"arkansas\"},\n        {text: \"California\", id: \"california\"},\n        {text: \"Colorado\", id: \"colorado\"},\n        {text: \"Connecticut\", id: \"connecticut\"},\n        {text: \"Delaware\", id: \"delaware\"},\n        {text: \"Florida\", id: \"florida\"},\n        {text: \"Georgia\", id: \"georgia\"},\n        {text: \"Hawaii\", id: \"hawaii\"},\n        {text: \"Idaho\", id: \"idaho\"},\n        {text: \"Illinois\", id: \"illinois\"},\n        {text: \"Indiana\", id: \"Indiana\"},\n        {text: \"Iowa\", id: \"iowa\", palette: \"accent\"},\n        {text: \"Kansas\", id: \"kansas\"},\n        {text: \"Kentucky\", id: \"kentucky\"},\n        {text: \"Louisiana\", id: \"louisiana\"},\n        {text: \"Maine\", id: \"maine\"},\n        {text: \"Maryland\", id: \"maryland\"},\n        {text: \"Massachusetts\", id: \"massachusetts\"},\n        {text: \"Michigan\", id: \"michigan\"},\n        {text: \"Minnesota\", id: \"minnesota\"},\n        {text: \"Mississippi\", id: \"mississippi\"},\n        {text: \"Missouri\", id: \"missouri\"},\n        {text: \"Montana\", id: \"montana\"},\n        {text: \"Nebraska\", id: \"nebraska\"},\n        {text: \"Nevada\", id: \"nevada\"},\n        {text: \"New Hampshire\", id: \"new-hampshire\"},\n        {text: \"New Jersey\", id: \"new-jersey\"},\n        {text: \"New Mexico\", id: \"new-mexico\"},\n        {text: \"New York\", id: \"new-york\"},\n        {text: \"North Carolina\", id: \"north-carolina\"},\n        {text: \"North Dakota\", id: \"north-dakota\"},\n        {text: \"Ohio\", id: \"ohio\"},\n        {text: \"Oklahoma\", id: \"oklahoma\"},\n        {text: \"Oregon\", id: \"oregon\"},\n        {text: \"Pennsylvania\", id: \"pennsylvania\"},\n        {text: \"Rhode Island\", id: \"rhode-island\"},\n        {text: \"South Carolina\", id: \"south-carolina\"},\n        {text: \"South Dakota\", id: \"south-dakota\"},\n        {text: \"Tennessee\", id: \"tennessee\"},\n        {text: \"Texas\", id: \"texas\"},\n        {text: \"Utah\", id: \"utah\"},\n        {text: \"Vermont\", id: \"vermont\"},\n        {text: \"Virginia\", id: \"virginia\"},\n        {text: \"Washington\", id: \"washington\"},\n        {text: \"West Virginia\", id: \"west-virginia\"},\n        {text: \"Wisconsin\", id: \"wisconsin\"},\n        {text: \"Wyoming\", id: \"wyoming\"},\n    ];\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n\n        <br />\n        <DataSelect\n            items={ITEMS}\n            logic_name=\"dataselect-palette-default\"\n            placeholder=\"Select a US State...\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">ACCENT</Text>\n\n        <br />\n        <DataSelect\n            items={ITEMS}\n            logic_name=\"dataselect-palette-accent\"\n            placeholder=\"Select a US State...\"\n            palette=\"accent\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">NEUTRAL</Text>\n\n        <br />\n        <DataSelect\n            items={ITEMS}\n            logic_name=\"dataselect-palette-neutral\"\n            placeholder=\"Select a US State...\"\n            palette=\"neutral\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">DARK</Text>\n\n        <br />\n        <DataSelect\n            items={ITEMS}\n            logic_name=\"dataselect-palette-dark\"\n            placeholder=\"Select a US State...\"\n            palette=\"dark\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">LIGHT</Text>\n\n        <br />\n        <DataSelect\n            items={ITEMS}\n            logic_name=\"dataselect-palette-light\"\n            placeholder=\"Select a US State...\"\n            palette=\"light\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">ALERT</Text>\n\n        <br />\n        <DataSelect\n            items={ITEMS}\n            logic_name=\"dataselect-palette-alert\"\n            placeholder=\"Select a US State...\"\n            palette=\"alert\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">AFFIRMATIVE</Text>\n\n        <br />\n        <DataSelect\n            items={ITEMS}\n            logic_name=\"dataselect-palette-affirmative\"\n            placeholder=\"Select a US State...\"\n            palette=\"affirmative\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">INFORMATIVE</Text>\n\n        <br />\n        <DataSelect\n            items={ITEMS}\n            logic_name=\"dataselect-palette-informative\"\n            placeholder=\"Select a US State...\"\n            palette=\"informative\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">NEGATIVE</Text>\n\n        <br />\n        <DataSelect\n            items={ITEMS}\n            logic_name=\"dataselect-palette-negative\"\n            placeholder=\"Select a US State...\"\n            palette=\"negative\"\n        />\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=dataselect-preview","title":"DataSelect Preview","text":"<script>\n    import {DataSelect} from \"@kahi-ui/framework\";\n\n    const ITEMS = [\n        {\n            text: \"Alabama\",\n            id: \"alabama\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Alaska\",\n            id: \"alaska\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Arizona\",\n            id: \"arizona\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Arkansas\",\n            id: \"arkansas\",\n            palette: \"accent\",\n        },\n        {\n            text: \"California\",\n            id: \"california\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Colorado\",\n            id: \"colorado\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Connecticut\",\n            id: \"connecticut\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Delaware\",\n            id: \"delaware\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Florida\",\n            id: \"florida\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Georgia\",\n            id: \"georgia\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Hawaii\",\n            id: \"hawaii\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Idaho\",\n            id: \"idaho\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Illinois\",\n            id: \"illinois\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Indiana\",\n            id: \"Indiana\",\n            palette: \"accent\",\n        },\n        {text: \"Iowa\", id: \"iowa\", palette: \"accent\"},\n        {\n            text: \"Kansas\",\n            id: \"kansas\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Kentucky\",\n            id: \"kentucky\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Louisiana\",\n            id: \"louisiana\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Maine\",\n            id: \"maine\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Maryland\",\n            id: \"maryland\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Massachusetts\",\n            id: \"massachusetts\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Michigan\",\n            id: \"michigan\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Minnesota\",\n            id: \"minnesota\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Mississippi\",\n            id: \"mississippi\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Missouri\",\n            id: \"missouri\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Montana\",\n            id: \"montana\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Nebraska\",\n            id: \"nebraska\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Nevada\",\n            id: \"nevada\",\n            palette: \"accent\",\n        },\n        {\n            text: \"New Hampshire\",\n            id: \"new-hampshire\",\n            palette: \"accent\",\n        },\n        {\n            text: \"New Jersey\",\n            id: \"new-jersey\",\n            palette: \"accent\",\n        },\n        {\n            text: \"New Mexico\",\n            id: \"new-mexico\",\n            palette: \"accent\",\n        },\n        {\n            text: \"New York\",\n            id: \"new-york\",\n            palette: \"accent\",\n        },\n        {\n            text: \"North Carolina\",\n            id: \"north-carolina\",\n            palette: \"accent\",\n        },\n        {\n            text: \"North Dakota\",\n            id: \"north-dakota\",\n            palette: \"accent\",\n        },\n        {text: \"Ohio\", id: \"ohio\", palette: \"accent\"},\n        {\n            text: \"Oklahoma\",\n            id: \"oklahoma\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Oregon\",\n            id: \"oregon\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Pennsylvania\",\n            id: \"pennsylvania\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Rhode Island\",\n            id: \"rhode-island\",\n            palette: \"accent\",\n        },\n        {\n            text: \"South Carolina\",\n            id: \"south-carolina\",\n            palette: \"accent\",\n        },\n        {\n            text: \"South Dakota\",\n            id: \"south-dakota\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Tennessee\",\n            id: \"tennessee\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Texas\",\n            id: \"texas\",\n            palette: \"accent\",\n        },\n        {text: \"Utah\", id: \"utah\", palette: \"accent\"},\n        {\n            text: \"Vermont\",\n            id: \"vermont\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Virginia\",\n            id: \"virginia\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Washington\",\n            id: \"washington\",\n            palette: \"accent\",\n        },\n        {\n            text: \"West Virginia\",\n            id: \"west-virginia\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Wisconsin\",\n            id: \"wisconsin\",\n            palette: \"accent\",\n        },\n        {\n            text: \"Wyoming\",\n            id: \"wyoming\",\n            palette: \"accent\",\n        },\n    ];\n</script>\n\n<DataSelect\n    items={ITEMS}\n    logic_name=\"dataselect-preview\"\n    placeholder=\"Select a US State...\"\n    palette=\"accent\"\n/>"},{"identifier":"/playground?snippet=dataselect-searching","title":"DataSelect Searching","text":"<script>\n    import {DataSelect} from \"@kahi-ui/framework\";\n\n    const ITEMS = [\n        {text: \"Alabama\", id: \"alabama\"},\n        {text: \"Alaska\", id: \"alaska\"},\n        {text: \"Arizona\", id: \"arizona\"},\n        {text: \"Arkansas\", id: \"arkansas\"},\n        {text: \"California\", id: \"california\"},\n        {text: \"Colorado\", id: \"colorado\"},\n        {text: \"Connecticut\", id: \"connecticut\"},\n        {text: \"Delaware\", id: \"delaware\"},\n        {text: \"Florida\", id: \"florida\"},\n        {text: \"Georgia\", id: \"georgia\"},\n        {text: \"Hawaii\", id: \"hawaii\"},\n        {text: \"Idaho\", id: \"idaho\"},\n        {text: \"Illinois\", id: \"illinois\"},\n        {text: \"Indiana\", id: \"Indiana\"},\n        {text: \"Iowa\", id: \"iowa\", palette: \"accent\"},\n        {text: \"Kansas\", id: \"kansas\"},\n        {text: \"Kentucky\", id: \"kentucky\"},\n        {text: \"Louisiana\", id: \"louisiana\"},\n        {text: \"Maine\", id: \"maine\"},\n        {text: \"Maryland\", id: \"maryland\"},\n        {text: \"Massachusetts\", id: \"massachusetts\"},\n        {text: \"Michigan\", id: \"michigan\"},\n        {text: \"Minnesota\", id: \"minnesota\"},\n        {text: \"Mississippi\", id: \"mississippi\"},\n        {text: \"Missouri\", id: \"missouri\"},\n        {text: \"Montana\", id: \"montana\"},\n        {text: \"Nebraska\", id: \"nebraska\"},\n        {text: \"Nevada\", id: \"nevada\"},\n        {text: \"New Hampshire\", id: \"new-hampshire\"},\n        {text: \"New Jersey\", id: \"new-jersey\"},\n        {text: \"New Mexico\", id: \"new-mexico\"},\n        {text: \"New York\", id: \"new-york\"},\n        {text: \"North Carolina\", id: \"north-carolina\"},\n        {text: \"North Dakota\", id: \"north-dakota\"},\n        {text: \"Ohio\", id: \"ohio\"},\n        {text: \"Oklahoma\", id: \"oklahoma\"},\n        {text: \"Oregon\", id: \"oregon\"},\n        {text: \"Pennsylvania\", id: \"pennsylvania\"},\n        {text: \"Rhode Island\", id: \"rhode-island\"},\n        {text: \"South Carolina\", id: \"south-carolina\"},\n        {text: \"South Dakota\", id: \"south-dakota\"},\n        {text: \"Tennessee\", id: \"tennessee\"},\n        {text: \"Texas\", id: \"texas\"},\n        {text: \"Utah\", id: \"utah\"},\n        {text: \"Vermont\", id: \"vermont\"},\n        {text: \"Virginia\", id: \"virginia\"},\n        {text: \"Washington\", id: \"washington\"},\n        {text: \"West Virginia\", id: \"west-virginia\"},\n        {text: \"Wisconsin\", id: \"wisconsin\"},\n        {text: \"Wyoming\", id: \"wyoming\"},\n    ];\n</script>\n\n<DataSelect\n    items={ITEMS}\n    logic_name=\"dataselect-searching\"\n    placeholder=\"Select a US State...\"\n    searching=\"ma\"\n/>"},{"identifier":"/playground?snippet=dataselect-sizing","title":"DataSelect Sizing","text":"<script>\n    import {\n        DataSelect,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n\n    const ITEMS = [\n        {text: \"Alabama\", id: \"alabama\"},\n        {text: \"Alaska\", id: \"alaska\"},\n        {text: \"Arizona\", id: \"arizona\"},\n        {text: \"Arkansas\", id: \"arkansas\"},\n        {text: \"California\", id: \"california\"},\n        {text: \"Colorado\", id: \"colorado\"},\n        {text: \"Connecticut\", id: \"connecticut\"},\n        {text: \"Delaware\", id: \"delaware\"},\n        {text: \"Florida\", id: \"florida\"},\n        {text: \"Georgia\", id: \"georgia\"},\n        {text: \"Hawaii\", id: \"hawaii\"},\n        {text: \"Idaho\", id: \"idaho\"},\n        {text: \"Illinois\", id: \"illinois\"},\n        {text: \"Indiana\", id: \"Indiana\"},\n        {text: \"Iowa\", id: \"iowa\", palette: \"accent\"},\n        {text: \"Kansas\", id: \"kansas\"},\n        {text: \"Kentucky\", id: \"kentucky\"},\n        {text: \"Louisiana\", id: \"louisiana\"},\n        {text: \"Maine\", id: \"maine\"},\n        {text: \"Maryland\", id: \"maryland\"},\n        {text: \"Massachusetts\", id: \"massachusetts\"},\n        {text: \"Michigan\", id: \"michigan\"},\n        {text: \"Minnesota\", id: \"minnesota\"},\n        {text: \"Mississippi\", id: \"mississippi\"},\n        {text: \"Missouri\", id: \"missouri\"},\n        {text: \"Montana\", id: \"montana\"},\n        {text: \"Nebraska\", id: \"nebraska\"},\n        {text: \"Nevada\", id: \"nevada\"},\n        {text: \"New Hampshire\", id: \"new-hampshire\"},\n        {text: \"New Jersey\", id: \"new-jersey\"},\n        {text: \"New Mexico\", id: \"new-mexico\"},\n        {text: \"New York\", id: \"new-york\"},\n        {text: \"North Carolina\", id: \"north-carolina\"},\n        {text: \"North Dakota\", id: \"north-dakota\"},\n        {text: \"Ohio\", id: \"ohio\"},\n        {text: \"Oklahoma\", id: \"oklahoma\"},\n        {text: \"Oregon\", id: \"oregon\"},\n        {text: \"Pennsylvania\", id: \"pennsylvania\"},\n        {text: \"Rhode Island\", id: \"rhode-island\"},\n        {text: \"South Carolina\", id: \"south-carolina\"},\n        {text: \"South Dakota\", id: \"south-dakota\"},\n        {text: \"Tennessee\", id: \"tennessee\"},\n        {text: \"Texas\", id: \"texas\"},\n        {text: \"Utah\", id: \"utah\"},\n        {text: \"Vermont\", id: \"vermont\"},\n        {text: \"Virginia\", id: \"virginia\"},\n        {text: \"Washington\", id: \"washington\"},\n        {text: \"West Virginia\", id: \"west-virginia\"},\n        {text: \"Wisconsin\", id: \"wisconsin\"},\n        {text: \"Wyoming\", id: \"wyoming\"},\n    ];\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n\n        <br />\n        <DataSelect\n            items={ITEMS}\n            logic_name=\"dataselect-sizing-default\"\n            placeholder=\"Select a US State...\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">NANO</Text>\n\n        <br />\n        <DataSelect\n            items={ITEMS}\n            logic_name=\"dataselect-sizing-nano\"\n            placeholder=\"Select a US State...\"\n            sizing=\"nano\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">TINY</Text>\n\n        <br />\n        <DataSelect\n            items={ITEMS}\n            logic_name=\"dataselect-sizing-tiny\"\n            placeholder=\"Select a US State...\"\n            sizing=\"tiny\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">SMALL</Text>\n\n        <br />\n        <DataSelect\n            items={ITEMS}\n            logic_name=\"dataselect-sizing-small\"\n            placeholder=\"Select a US State...\"\n            sizing=\"small\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">MEDIUM</Text>\n\n        <br />\n        <DataSelect\n            items={ITEMS}\n            logic_name=\"dataselect-sizing-medium\"\n            placeholder=\"Select a US State...\"\n            sizing=\"medium\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">LARGE</Text>\n\n        <br />\n        <DataSelect\n            items={ITEMS}\n            logic_name=\"dataselect-sizing-large\"\n            placeholder=\"Select a US State...\"\n            sizing=\"large\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">HUGE</Text>\n\n        <br />\n        <DataSelect\n            items={ITEMS}\n            logic_name=\"dataselect-sizing-huge\"\n            placeholder=\"Select a US State...\"\n            sizing=\"huge\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">MASSIVE</Text>\n\n        <br />\n        <DataSelect\n            items={ITEMS}\n            logic_name=\"dataselect-sizing-massive\"\n            placeholder=\"Select a US State...\"\n            sizing=\"massive\"\n        />\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=datatable-pagination","title":"DataTable Pagination","text":"<script>\n    import {DataTable} from \"@kahi-ui/framework\";\n\n    const COLUMNS = [\n        {\n            text: \"First Name\",\n            key: \"first_name\",\n        },\n\n        {\n            text: \"Last Name\",\n            key: \"last_name\",\n        },\n\n        {\n            text: \"Occupation\",\n            key: \"occupation\",\n        },\n\n        {\n            text: \"Species\",\n            key: \"species\",\n        },\n    ];\n\n    const ROWS = [\n        {\n            first_name: \"Ahsoka\",\n            last_name: \"Tano\",\n            occupation: \"Unknown\",\n            species: \"Togruta\",\n        },\n\n        {\n            first_name: \"Cad\",\n            last_name: \"Bane\",\n            occupation: \"Bounty Hunter\",\n            species: \"Duros\",\n        },\n\n        {\n            first_name: \"Cobb\",\n            last_name: \"Vanth\",\n            occupation: \"Marshal\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Din\",\n            last_name: \"Djarin\",\n            occupation: \"Bounty Hunter\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Fennec\",\n            last_name: \"Shand\",\n            occupation: \"Assassin\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Gilad\",\n            last_name: \"Pellaeon\",\n            occupation: \"Grand Admiral\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Jagged\",\n            last_name: \"Fel\",\n            occupation: \"Emperor\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Max\",\n            last_name: \"Rebo\",\n            occupation: \"Musician\",\n            species: \"Ortolan\",\n        },\n\n        {\n            first_name: \"Mok\",\n            last_name: \"Shaiz\",\n            occupation: \"Mayor\",\n            species: \"Ithorian\",\n        },\n\n        {\n            first_name: \"Natasi\",\n            last_name: \"Daala\",\n            occupation: \"Chief of State\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Quinlan\",\n            last_name: \"Vos\",\n            occupation: \"Jedi Master\",\n            species: \"Kiffar\",\n        },\n\n        {\n            first_name: \"Tila\",\n            last_name: \"Mong\",\n            occupation: \"Baron Do Sage\",\n            species: \"Kel Dor\",\n        },\n    ];\n</script>\n\n<DataTable\n    columns={COLUMNS}\n    rows={ROWS}\n    palette=\"accent\"\n    paginate\n/>"},{"identifier":"/playground?snippet=datatable-pagination-page","title":"DataTable Pagination Page","text":"<script>\n    import {DataTable} from \"@kahi-ui/framework\";\n\n    const COLUMNS = [\n        {\n            text: \"First Name\",\n            key: \"first_name\",\n        },\n\n        {\n            text: \"Last Name\",\n            key: \"last_name\",\n        },\n\n        {\n            text: \"Occupation\",\n            key: \"occupation\",\n        },\n\n        {\n            text: \"Species\",\n            key: \"species\",\n        },\n    ];\n\n    const ROWS = [\n        {\n            first_name: \"Ahsoka\",\n            last_name: \"Tano\",\n            occupation: \"Unknown\",\n            species: \"Togruta\",\n        },\n\n        {\n            first_name: \"Cad\",\n            last_name: \"Bane\",\n            occupation: \"Bounty Hunter\",\n            species: \"Duros\",\n        },\n\n        {\n            first_name: \"Cobb\",\n            last_name: \"Vanth\",\n            occupation: \"Marshal\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Din\",\n            last_name: \"Djarin\",\n            occupation: \"Bounty Hunter\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Fennec\",\n            last_name: \"Shand\",\n            occupation: \"Assassin\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Gilad\",\n            last_name: \"Pellaeon\",\n            occupation: \"Grand Admiral\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Jagged\",\n            last_name: \"Fel\",\n            occupation: \"Emperor\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Max\",\n            last_name: \"Rebo\",\n            occupation: \"Musician\",\n            species: \"Ortolan\",\n        },\n\n        {\n            first_name: \"Mok\",\n            last_name: \"Shaiz\",\n            occupation: \"Mayor\",\n            species: \"Ithorian\",\n        },\n\n        {\n            first_name: \"Natasi\",\n            last_name: \"Daala\",\n            occupation: \"Chief of State\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Quinlan\",\n            last_name: \"Vos\",\n            occupation: \"Jedi Master\",\n            species: \"Kiffar\",\n        },\n\n        {\n            first_name: \"Tila\",\n            last_name: \"Mong\",\n            occupation: \"Baron Do Sage\",\n            species: \"Kel Dor\",\n        },\n    ];\n</script>\n\n<DataTable\n    columns={COLUMNS}\n    rows={ROWS}\n    page={3}\n    palette=\"accent\"\n    paginate\n/>"},{"identifier":"/playground?snippet=datatable-pagination-paging","title":"DataTable Pagination Paging","text":"<script>\n    import {DataTable} from \"@kahi-ui/framework\";\n\n    const COLUMNS = [\n        {\n            text: \"First Name\",\n            key: \"first_name\",\n        },\n\n        {\n            text: \"Last Name\",\n            key: \"last_name\",\n        },\n\n        {\n            text: \"Occupation\",\n            key: \"occupation\",\n        },\n\n        {\n            text: \"Species\",\n            key: \"species\",\n        },\n    ];\n\n    const ROWS = [\n        {\n            first_name: \"Ahsoka\",\n            last_name: \"Tano\",\n            occupation: \"Unknown\",\n            species: \"Togruta\",\n        },\n\n        {\n            first_name: \"Cad\",\n            last_name: \"Bane\",\n            occupation: \"Bounty Hunter\",\n            species: \"Duros\",\n        },\n\n        {\n            first_name: \"Cobb\",\n            last_name: \"Vanth\",\n            occupation: \"Marshal\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Din\",\n            last_name: \"Djarin\",\n            occupation: \"Bounty Hunter\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Fennec\",\n            last_name: \"Shand\",\n            occupation: \"Assassin\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Gilad\",\n            last_name: \"Pellaeon\",\n            occupation: \"Grand Admiral\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Jagged\",\n            last_name: \"Fel\",\n            occupation: \"Emperor\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Max\",\n            last_name: \"Rebo\",\n            occupation: \"Musician\",\n            species: \"Ortolan\",\n        },\n\n        {\n            first_name: \"Mok\",\n            last_name: \"Shaiz\",\n            occupation: \"Mayor\",\n            species: \"Ithorian\",\n        },\n\n        {\n            first_name: \"Natasi\",\n            last_name: \"Daala\",\n            occupation: \"Chief of State\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Quinlan\",\n            last_name: \"Vos\",\n            occupation: \"Jedi Master\",\n            species: \"Kiffar\",\n        },\n\n        {\n            first_name: \"Tila\",\n            last_name: \"Mong\",\n            occupation: \"Baron Do Sage\",\n            species: \"Kel Dor\",\n        },\n    ];\n</script>\n\n<DataTable\n    columns={COLUMNS}\n    rows={ROWS}\n    paging={8}\n    palette=\"accent\"\n    paginate\n/>"},{"identifier":"/playground?snippet=datatable-palette","title":"DataTable Palette","text":"<script>\n    import {\n        DataTable,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n\n    const COLUMNS = [\n        {\n            text: \"First Name\",\n            key: \"first_name\",\n        },\n\n        {\n            text: \"Last Name\",\n            key: \"last_name\",\n        },\n\n        {\n            text: \"Occupation\",\n            key: \"occupation\",\n        },\n\n        {\n            text: \"Species\",\n            key: \"species\",\n        },\n    ];\n\n    const ROWS = [\n        {\n            first_name: \"Ahsoka\",\n            last_name: \"Tano\",\n            occupation: \"Unknown\",\n            species: \"Togruta\",\n        },\n\n        {\n            first_name: \"Cad\",\n            last_name: \"Bane\",\n            occupation: \"Bounty Hunter\",\n            species: \"Duros\",\n        },\n\n        {\n            first_name: \"Cobb\",\n            last_name: \"Vanth\",\n            occupation: \"Marshal\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Din\",\n            last_name: \"Djarin\",\n            occupation: \"Bounty Hunter\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Fennec\",\n            last_name: \"Shand\",\n            occupation: \"Assassin\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Gilad\",\n            last_name: \"Pellaeon\",\n            occupation: \"Grand Admiral\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Jagged\",\n            last_name: \"Fel\",\n            occupation: \"Emperor\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Max\",\n            last_name: \"Rebo\",\n            occupation: \"Musician\",\n            species: \"Ortolan\",\n        },\n\n        {\n            first_name: \"Mok\",\n            last_name: \"Shaiz\",\n            occupation: \"Mayor\",\n            species: \"Ithorian\",\n        },\n\n        {\n            first_name: \"Natasi\",\n            last_name: \"Daala\",\n            occupation: \"Chief of State\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Quinlan\",\n            last_name: \"Vos\",\n            occupation: \"Jedi Master\",\n            species: \"Kiffar\",\n        },\n\n        {\n            first_name: \"Tila\",\n            last_name: \"Mong\",\n            occupation: \"Baron Do Sage\",\n            species: \"Kel Dor\",\n        },\n    ];\n</script>\n\n<Stack.Container spacing=\"medium\">\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n\n        <DataTable\n            columns={COLUMNS}\n            rows={ROWS}\n            paginate\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">ACCENT</Text>\n\n        <DataTable\n            columns={COLUMNS}\n            rows={ROWS}\n            palette=\"accent\"\n            paginate\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">NEUTRAL</Text>\n\n        <DataTable\n            columns={COLUMNS}\n            rows={ROWS}\n            palette=\"neutral\"\n            paginate\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">DARK</Text>\n\n        <DataTable\n            columns={COLUMNS}\n            rows={ROWS}\n            palette=\"dark\"\n            paginate\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">LIGHT</Text>\n\n        <DataTable\n            columns={COLUMNS}\n            rows={ROWS}\n            palette=\"light\"\n            paginate\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">ALERT</Text>\n\n        <DataTable\n            columns={COLUMNS}\n            rows={ROWS}\n            palette=\"alert\"\n            paginate\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">AFFIRMATIVE</Text>\n\n        <DataTable\n            columns={COLUMNS}\n            rows={ROWS}\n            palette=\"affirmative\"\n            paginate\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">INFORMATIVE</Text>\n\n        <DataTable\n            columns={COLUMNS}\n            rows={ROWS}\n            palette=\"informative\"\n            paginate\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">NEGATIVE</Text>\n\n        <DataTable\n            columns={COLUMNS}\n            rows={ROWS}\n            palette=\"negative\"\n            paginate\n        />\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=datatable-preview","title":"DataTable Preview","text":"<script>\n    import {DataTable} from \"@kahi-ui/framework\";\n\n    const COLUMNS = [\n        {\n            text: \"First Name\",\n            key: \"first_name\",\n            sorting: true,\n        },\n\n        {\n            text: \"Last Name\",\n            key: \"last_name\",\n            sorting: true,\n        },\n\n        {\n            text: \"Occupation\",\n            key: \"occupation\",\n            sorting: true,\n        },\n\n        {\n            text: \"Species\",\n            key: \"species\",\n            sorting: true,\n        },\n    ];\n\n    const ROWS = [\n        {\n            first_name: \"Ahsoka\",\n            last_name: \"Tano\",\n            occupation: \"Unknown\",\n            species: \"Togruta\",\n        },\n\n        {\n            first_name: \"Cad\",\n            last_name: \"Bane\",\n            occupation: \"Bounty Hunter\",\n            species: \"Duros\",\n        },\n\n        {\n            first_name: \"Cobb\",\n            last_name: \"Vanth\",\n            occupation: \"Marshal\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Din\",\n            last_name: \"Djarin\",\n            occupation: \"Bounty Hunter\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Fennec\",\n            last_name: \"Shand\",\n            occupation: \"Assassin\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Gilad\",\n            last_name: \"Pellaeon\",\n            occupation: \"Grand Admiral\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Jagged\",\n            last_name: \"Fel\",\n            occupation: \"Emperor\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Max\",\n            last_name: \"Rebo\",\n            occupation: \"Musician\",\n            species: \"Ortolan\",\n        },\n\n        {\n            first_name: \"Mok\",\n            last_name: \"Shaiz\",\n            occupation: \"Mayor\",\n            species: \"Ithorian\",\n        },\n\n        {\n            first_name: \"Natasi\",\n            last_name: \"Daala\",\n            occupation: \"Chief of State\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Quinlan\",\n            last_name: \"Vos\",\n            occupation: \"Jedi Master\",\n            species: \"Kiffar\",\n        },\n\n        {\n            first_name: \"Tila\",\n            last_name: \"Mong\",\n            occupation: \"Baron Do Sage\",\n            species: \"Kel Dor\",\n        },\n    ];\n</script>\n\n<DataTable\n    columns={COLUMNS}\n    rows={ROWS}\n    palette=\"accent\"\n    paginate\n/>"},{"identifier":"/playground?snippet=datatable-searching","title":"DataTable Searching","text":"<script>\n    import {DataTable} from \"@kahi-ui/framework\";\n\n    const COLUMNS = [\n        {\n            text: \"First Name\",\n            key: \"first_name\",\n        },\n\n        {\n            text: \"Last Name\",\n            key: \"last_name\",\n        },\n\n        {\n            text: \"Occupation\",\n            key: \"occupation\",\n        },\n\n        {\n            text: \"Species\",\n            key: \"species\",\n        },\n    ];\n\n    const ROWS = [\n        {\n            first_name: \"Ahsoka\",\n            last_name: \"Tano\",\n            occupation: \"Unknown\",\n            species: \"Togruta\",\n        },\n\n        {\n            first_name: \"Cad\",\n            last_name: \"Bane\",\n            occupation: \"Bounty Hunter\",\n            species: \"Duros\",\n        },\n\n        {\n            first_name: \"Cobb\",\n            last_name: \"Vanth\",\n            occupation: \"Marshal\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Din\",\n            last_name: \"Djarin\",\n            occupation: \"Bounty Hunter\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Fennec\",\n            last_name: \"Shand\",\n            occupation: \"Assassin\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Gilad\",\n            last_name: \"Pellaeon\",\n            occupation: \"Grand Admiral\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Jagged\",\n            last_name: \"Fel\",\n            occupation: \"Emperor\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Max\",\n            last_name: \"Rebo\",\n            occupation: \"Musician\",\n            species: \"Ortolan\",\n        },\n\n        {\n            first_name: \"Mok\",\n            last_name: \"Shaiz\",\n            occupation: \"Mayor\",\n            species: \"Ithorian\",\n        },\n\n        {\n            first_name: \"Natasi\",\n            last_name: \"Daala\",\n            occupation: \"Chief of State\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Quinlan\",\n            last_name: \"Vos\",\n            occupation: \"Jedi Master\",\n            species: \"Kiffar\",\n        },\n\n        {\n            first_name: \"Tila\",\n            last_name: \"Mong\",\n            occupation: \"Baron Do Sage\",\n            species: \"Kel Dor\",\n        },\n    ];\n</script>\n\n<DataTable\n    columns={COLUMNS}\n    rows={ROWS}\n    searching=\"Bounty Hunter\"\n    palette=\"accent\"\n/>"},{"identifier":"/playground?snippet=datatable-searching-algorithm","title":"DataTable Searching Algorithm","text":"<script>\n    import {DataTable} from \"@kahi-ui/framework\";\n\n    const COLUMNS = [\n        {\n            text: \"First Name\",\n            key: \"first_name\",\n        },\n\n        {\n            text: \"Last Name\",\n            key: \"last_name\",\n        },\n\n        {\n            text: \"Occupation\",\n            key: \"occupation\",\n        },\n\n        {\n            text: \"Species\",\n            key: \"species\",\n        },\n    ];\n\n    const ROWS = [\n        {\n            first_name: \"Ahsoka\",\n            last_name: \"Tano\",\n            occupation: \"Unknown\",\n            species: \"Togruta\",\n        },\n\n        {\n            first_name: \"Cad\",\n            last_name: \"Bane\",\n            occupation: \"Bounty Hunter\",\n            species: \"Duros\",\n        },\n\n        {\n            first_name: \"Cobb\",\n            last_name: \"Vanth\",\n            occupation: \"Marshal\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Din\",\n            last_name: \"Djarin\",\n            occupation: \"Bounty Hunter\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Fennec\",\n            last_name: \"Shand\",\n            occupation: \"Assassin\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Gilad\",\n            last_name: \"Pellaeon\",\n            occupation: \"Grand Admiral\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Jagged\",\n            last_name: \"Fel\",\n            occupation: \"Emperor\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Max\",\n            last_name: \"Rebo\",\n            occupation: \"Musician\",\n            species: \"Ortolan\",\n        },\n\n        {\n            first_name: \"Mok\",\n            last_name: \"Shaiz\",\n            occupation: \"Mayor\",\n            species: \"Ithorian\",\n        },\n\n        {\n            first_name: \"Natasi\",\n            last_name: \"Daala\",\n            occupation: \"Chief of State\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Quinlan\",\n            last_name: \"Vos\",\n            occupation: \"Jedi Master\",\n            species: \"Kiffar\",\n        },\n\n        {\n            first_name: \"Tila\",\n            last_name: \"Mong\",\n            occupation: \"Baron Do Sage\",\n            species: \"Kel Dor\",\n        },\n    ];\n\n    let searching = \"\";\n\n    function searching_algorithm(row) {\n        // Instead of fuzzy searching the strings, we're only\n        // looking if the first name BEGINS with our search filter\n\n        return row.first_name.startsWith(searching);\n    }\n</script>\n\n<DataTable\n    columns={COLUMNS}\n    rows={ROWS}\n    palette=\"accent\"\n    {searching_algorithm}\n    bind:searching\n/>"},{"identifier":"/playground?snippet=datatable-sizing","title":"DataTable Sizing","text":"<script>\n    import {\n        DataTable,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n\n    const COLUMNS = [\n        {\n            text: \"First Name\",\n            key: \"first_name\",\n        },\n\n        {\n            text: \"Last Name\",\n            key: \"last_name\",\n        },\n\n        {\n            text: \"Occupation\",\n            key: \"occupation\",\n        },\n\n        {\n            text: \"Species\",\n            key: \"species\",\n        },\n    ];\n\n    const ROWS = [\n        {\n            first_name: \"Ahsoka\",\n            last_name: \"Tano\",\n            occupation: \"Unknown\",\n            species: \"Togruta\",\n        },\n\n        {\n            first_name: \"Cad\",\n            last_name: \"Bane\",\n            occupation: \"Bounty Hunter\",\n            species: \"Duros\",\n        },\n\n        {\n            first_name: \"Cobb\",\n            last_name: \"Vanth\",\n            occupation: \"Marshal\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Din\",\n            last_name: \"Djarin\",\n            occupation: \"Bounty Hunter\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Fennec\",\n            last_name: \"Shand\",\n            occupation: \"Assassin\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Gilad\",\n            last_name: \"Pellaeon\",\n            occupation: \"Grand Admiral\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Jagged\",\n            last_name: \"Fel\",\n            occupation: \"Emperor\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Max\",\n            last_name: \"Rebo\",\n            occupation: \"Musician\",\n            species: \"Ortolan\",\n        },\n\n        {\n            first_name: \"Mok\",\n            last_name: \"Shaiz\",\n            occupation: \"Mayor\",\n            species: \"Ithorian\",\n        },\n\n        {\n            first_name: \"Natasi\",\n            last_name: \"Daala\",\n            occupation: \"Chief of State\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Quinlan\",\n            last_name: \"Vos\",\n            occupation: \"Jedi Master\",\n            species: \"Kiffar\",\n        },\n\n        {\n            first_name: \"Tila\",\n            last_name: \"Mong\",\n            occupation: \"Baron Do Sage\",\n            species: \"Kel Dor\",\n        },\n    ];\n</script>\n\n<Stack.Container spacing=\"medium\">\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n\n        <DataTable\n            columns={COLUMNS}\n            rows={ROWS}\n            paginate\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">TINY</Text>\n\n        <DataTable\n            columns={COLUMNS}\n            rows={ROWS}\n            sizing=\"tiny\"\n            paginate\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">SMALL</Text>\n\n        <DataTable\n            columns={COLUMNS}\n            rows={ROWS}\n            sizing=\"small\"\n            paginate\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">MEDIUM</Text>\n\n        <DataTable\n            columns={COLUMNS}\n            rows={ROWS}\n            sizing=\"medium\"\n            paginate\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">LARGE</Text>\n\n        <DataTable\n            columns={COLUMNS}\n            rows={ROWS}\n            sizing=\"large\"\n            paginate\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">HUGE</Text>\n\n        <DataTable\n            columns={COLUMNS}\n            rows={ROWS}\n            sizing=\"huge\"\n            paginate\n        />\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=datatable-slot","title":"DataTable Slot","text":"<script>\n    import {\n        DataTable,\n        TextInput,\n    } from \"@kahi-ui/framework\";\n\n    const COLUMNS = [\n        {\n            text: \"First Name\",\n            key: \"first_name\",\n        },\n\n        {\n            text: \"Last Name\",\n            key: \"last_name\",\n        },\n\n        {\n            text: \"Occupation\",\n            key: \"occupation\",\n        },\n\n        {\n            text: \"Species\",\n            key: \"species\",\n        },\n    ];\n\n    let ROWS = [\n        {\n            first_name: \"Ahsoka\",\n            last_name: \"Tano\",\n            occupation: \"Unknown\",\n            species: \"Togruta\",\n        },\n\n        {\n            first_name: \"Cad\",\n            last_name: \"Bane\",\n            occupation: \"Bounty Hunter\",\n            species: \"Duros\",\n        },\n\n        {\n            first_name: \"Cobb\",\n            last_name: \"Vanth\",\n            occupation: \"Marshal\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Din\",\n            last_name: \"Djarin\",\n            occupation: \"Bounty Hunter\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Fennec\",\n            last_name: \"Shand\",\n            occupation: \"Assassin\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Gilad\",\n            last_name: \"Pellaeon\",\n            occupation: \"Grand Admiral\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Jagged\",\n            last_name: \"Fel\",\n            occupation: \"Emperor\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Max\",\n            last_name: \"Rebo\",\n            occupation: \"Musician\",\n            species: \"Ortolan\",\n        },\n\n        {\n            first_name: \"Mok\",\n            last_name: \"Shaiz\",\n            occupation: \"Mayor\",\n            species: \"Ithorian\",\n        },\n\n        {\n            first_name: \"Natasi\",\n            last_name: \"Daala\",\n            occupation: \"Chief of State\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Quinlan\",\n            last_name: \"Vos\",\n            occupation: \"Jedi Master\",\n            species: \"Kiffar\",\n        },\n\n        {\n            first_name: \"Tila\",\n            last_name: \"Mong\",\n            occupation: \"Baron Do Sage\",\n            species: \"Kel Dor\",\n        },\n    ];\n\n    function on_first_name_input(row, event) {\n        const index = ROWS.findIndex(\n            (_row) => row === _row\n        );\n\n        // NOTE: You should always clone your array / object data\n        // before making mutations! Saves headaches down the road\n        ROWS = [...ROWS];\n\n        ROWS[index] = {\n            ...row,\n            first_name: event.target.value,\n        };\n    }\n</script>\n\n<DataTable\n    columns={COLUMNS}\n    rows={ROWS}\n    palette=\"accent\"\n>\n    <svelte:fragment let:key let:row>\n        {#if key === \"first_name\"}\n            <TextInput\n                value={row[\"first_name\"]}\n                variation=\"flush\"\n                width=\"100\"\n                on:input={on_first_name_input.bind(\n                    null,\n                    row\n                )}\n            />\n        {:else}\n            {row[key]}\n        {/if}\n    </svelte:fragment>\n</DataTable>"},{"identifier":"/playground?snippet=datatable-slot-paging","title":"DataTable Slot Paging","text":"<script>\n    import {\n        DataTable,\n        TextInput,\n    } from \"@kahi-ui/framework\";\n\n    const COLUMNS = [\n        {\n            text: \"First Name\",\n            key: \"first_name\",\n        },\n\n        {\n            text: \"Last Name\",\n            key: \"last_name\",\n        },\n\n        {\n            text: \"Occupation\",\n            key: \"occupation\",\n        },\n\n        {\n            text: \"Species\",\n            key: \"species\",\n        },\n    ];\n\n    const ROWS = [\n        {\n            first_name: \"Ahsoka\",\n            last_name: \"Tano\",\n            occupation: \"Unknown\",\n            species: \"Togruta\",\n        },\n\n        {\n            first_name: \"Cad\",\n            last_name: \"Bane\",\n            occupation: \"Bounty Hunter\",\n            species: \"Duros\",\n        },\n\n        {\n            first_name: \"Cobb\",\n            last_name: \"Vanth\",\n            occupation: \"Marshal\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Din\",\n            last_name: \"Djarin\",\n            occupation: \"Bounty Hunter\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Fennec\",\n            last_name: \"Shand\",\n            occupation: \"Assassin\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Gilad\",\n            last_name: \"Pellaeon\",\n            occupation: \"Grand Admiral\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Jagged\",\n            last_name: \"Fel\",\n            occupation: \"Emperor\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Max\",\n            last_name: \"Rebo\",\n            occupation: \"Musician\",\n            species: \"Ortolan\",\n        },\n\n        {\n            first_name: \"Mok\",\n            last_name: \"Shaiz\",\n            occupation: \"Mayor\",\n            species: \"Ithorian\",\n        },\n\n        {\n            first_name: \"Natasi\",\n            last_name: \"Daala\",\n            occupation: \"Chief of State\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Quinlan\",\n            last_name: \"Vos\",\n            occupation: \"Jedi Master\",\n            species: \"Kiffar\",\n        },\n\n        {\n            first_name: \"Tila\",\n            last_name: \"Mong\",\n            occupation: \"Baron Do Sage\",\n            species: \"Kel Dor\",\n        },\n    ];\n</script>\n\n<DataTable\n    columns={COLUMNS}\n    rows={ROWS}\n    palette=\"accent\"\n    paginate\n>\n    <svelte:fragment slot=\"previous\">\n        -\n    </svelte:fragment>\n\n    <svelte:fragment slot=\"next\">+</svelte:fragment>\n</DataTable>"},{"identifier":"/playground?snippet=datatable-slot-sorting","title":"DataTable Slot Sorting","text":"<script>\n    import {\n        DataTable,\n        TextInput,\n    } from \"@kahi-ui/framework\";\n\n    const COLUMNS = [\n        {\n            text: \"First Name\",\n            key: \"first_name\",\n            sorting: true,\n        },\n\n        {\n            text: \"Last Name\",\n            key: \"last_name\",\n        },\n\n        {\n            text: \"Occupation\",\n            key: \"occupation\",\n        },\n\n        {\n            text: \"Species\",\n            key: \"species\",\n        },\n    ];\n\n    const ROWS = [\n        {\n            first_name: \"Ahsoka\",\n            last_name: \"Tano\",\n            occupation: \"Unknown\",\n            species: \"Togruta\",\n        },\n\n        {\n            first_name: \"Cad\",\n            last_name: \"Bane\",\n            occupation: \"Bounty Hunter\",\n            species: \"Duros\",\n        },\n\n        {\n            first_name: \"Cobb\",\n            last_name: \"Vanth\",\n            occupation: \"Marshal\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Din\",\n            last_name: \"Djarin\",\n            occupation: \"Bounty Hunter\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Fennec\",\n            last_name: \"Shand\",\n            occupation: \"Assassin\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Gilad\",\n            last_name: \"Pellaeon\",\n            occupation: \"Grand Admiral\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Jagged\",\n            last_name: \"Fel\",\n            occupation: \"Emperor\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Max\",\n            last_name: \"Rebo\",\n            occupation: \"Musician\",\n            species: \"Ortolan\",\n        },\n\n        {\n            first_name: \"Mok\",\n            last_name: \"Shaiz\",\n            occupation: \"Mayor\",\n            species: \"Ithorian\",\n        },\n\n        {\n            first_name: \"Natasi\",\n            last_name: \"Daala\",\n            occupation: \"Chief of State\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Quinlan\",\n            last_name: \"Vos\",\n            occupation: \"Jedi Master\",\n            species: \"Kiffar\",\n        },\n\n        {\n            first_name: \"Tila\",\n            last_name: \"Mong\",\n            occupation: \"Baron Do Sage\",\n            species: \"Kel Dor\",\n        },\n    ];\n</script>\n\n<DataTable\n    columns={COLUMNS}\n    rows={ROWS}\n    palette=\"accent\"\n    paginate\n>\n    <svelte:fragment slot=\"unsorted\">\n        =/=\n    </svelte:fragment>\n\n    <svelte:fragment slot=\"ascending\">\n        ASC\n    </svelte:fragment>\n\n    <svelte:fragment slot=\"descending\">\n        DEC\n    </svelte:fragment>\n</DataTable>"},{"identifier":"/playground?snippet=datatable-sorting","title":"DataTable Sorting","text":"<script>\n    import {DataTable} from \"@kahi-ui/framework\";\n\n    const COLUMNS = [\n        {\n            text: \"First Name\",\n            key: \"first_name\",\n        },\n\n        {\n            text: \"Last Name\",\n            key: \"last_name\",\n        },\n\n        {\n            text: \"Occupation\",\n            key: \"occupation\",\n            sorting: true,\n        },\n\n        {\n            text: \"Species\",\n            key: \"species\",\n        },\n    ];\n\n    const ROWS = [\n        {\n            first_name: \"Ahsoka\",\n            last_name: \"Tano\",\n            occupation: \"Unknown\",\n            species: \"Togruta\",\n        },\n\n        {\n            first_name: \"Cad\",\n            last_name: \"Bane\",\n            occupation: \"Bounty Hunter\",\n            species: \"Duros\",\n        },\n\n        {\n            first_name: \"Cobb\",\n            last_name: \"Vanth\",\n            occupation: \"Marshal\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Din\",\n            last_name: \"Djarin\",\n            occupation: \"Bounty Hunter\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Fennec\",\n            last_name: \"Shand\",\n            occupation: \"Assassin\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Gilad\",\n            last_name: \"Pellaeon\",\n            occupation: \"Grand Admiral\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Jagged\",\n            last_name: \"Fel\",\n            occupation: \"Emperor\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Max\",\n            last_name: \"Rebo\",\n            occupation: \"Musician\",\n            species: \"Ortolan\",\n        },\n\n        {\n            first_name: \"Mok\",\n            last_name: \"Shaiz\",\n            occupation: \"Mayor\",\n            species: \"Ithorian\",\n        },\n\n        {\n            first_name: \"Natasi\",\n            last_name: \"Daala\",\n            occupation: \"Chief of State\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Quinlan\",\n            last_name: \"Vos\",\n            occupation: \"Jedi Master\",\n            species: \"Kiffar\",\n        },\n\n        {\n            first_name: \"Tila\",\n            last_name: \"Mong\",\n            occupation: \"Baron Do Sage\",\n            species: \"Kel Dor\",\n        },\n    ];\n</script>\n\n<DataTable\n    columns={COLUMNS}\n    rows={ROWS}\n    palette=\"accent\"\n/>"},{"identifier":"/playground?snippet=datatable-sorting-algorithm","title":"DataTable Sorting Algorithm","text":"<script>\n    import {DataTable} from \"@kahi-ui/framework\";\n\n    const COLUMNS = [\n        {\n            text: \"First Name\",\n            key: \"first_name\",\n        },\n\n        {\n            text: \"Last Name\",\n            key: \"last_name\",\n        },\n\n        {\n            text: \"Occupation\",\n            key: \"occupation\",\n            sorting: true,\n            sorting_algorithm: (a, b) => {\n                // Instead of alphabetizing, we're sorting by length of\n                // the `occupation` strings\n\n                return a.length > b.length ? 1 : -1;\n            },\n        },\n\n        {\n            text: \"Species\",\n            key: \"species\",\n        },\n    ];\n\n    const ROWS = [\n        {\n            first_name: \"Ahsoka\",\n            last_name: \"Tano\",\n            occupation: \"Unknown\",\n            species: \"Togruta\",\n        },\n\n        {\n            first_name: \"Cad\",\n            last_name: \"Bane\",\n            occupation: \"Bounty Hunter\",\n            species: \"Duros\",\n        },\n\n        {\n            first_name: \"Cobb\",\n            last_name: \"Vanth\",\n            occupation: \"Marshal\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Din\",\n            last_name: \"Djarin\",\n            occupation: \"Bounty Hunter\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Fennec\",\n            last_name: \"Shand\",\n            occupation: \"Assassin\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Gilad\",\n            last_name: \"Pellaeon\",\n            occupation: \"Grand Admiral\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Jagged\",\n            last_name: \"Fel\",\n            occupation: \"Emperor\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Max\",\n            last_name: \"Rebo\",\n            occupation: \"Musician\",\n            species: \"Ortolan\",\n        },\n\n        {\n            first_name: \"Mok\",\n            last_name: \"Shaiz\",\n            occupation: \"Mayor\",\n            species: \"Ithorian\",\n        },\n\n        {\n            first_name: \"Natasi\",\n            last_name: \"Daala\",\n            occupation: \"Chief of State\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Quinlan\",\n            last_name: \"Vos\",\n            occupation: \"Jedi Master\",\n            species: \"Kiffar\",\n        },\n\n        {\n            first_name: \"Tila\",\n            last_name: \"Mong\",\n            occupation: \"Baron Do Sage\",\n            species: \"Kel Dor\",\n        },\n    ];\n</script>\n\n<DataTable\n    columns={COLUMNS}\n    rows={ROWS}\n    palette=\"accent\"\n/>"},{"identifier":"/playground?snippet=datatable-sorting-mode","title":"DataTable Sorting Mode","text":"<script>\n    import {DataTable} from \"@kahi-ui/framework\";\n\n    const COLUMNS = [\n        {\n            text: \"First Name\",\n            key: \"first_name\",\n        },\n\n        {\n            text: \"Last Name\",\n            key: \"last_name\",\n        },\n\n        {\n            text: \"Occupation\",\n            key: \"occupation\",\n            sorting: true,\n        },\n\n        {\n            text: \"Species\",\n            key: \"species\",\n        },\n    ];\n\n    const ROWS = [\n        {\n            first_name: \"Ahsoka\",\n            last_name: \"Tano\",\n            occupation: \"Unknown\",\n            species: \"Togruta\",\n        },\n\n        {\n            first_name: \"Cad\",\n            last_name: \"Bane\",\n            occupation: \"Bounty Hunter\",\n            species: \"Duros\",\n        },\n\n        {\n            first_name: \"Cobb\",\n            last_name: \"Vanth\",\n            occupation: \"Marshal\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Din\",\n            last_name: \"Djarin\",\n            occupation: \"Bounty Hunter\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Fennec\",\n            last_name: \"Shand\",\n            occupation: \"Assassin\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Gilad\",\n            last_name: \"Pellaeon\",\n            occupation: \"Grand Admiral\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Jagged\",\n            last_name: \"Fel\",\n            occupation: \"Emperor\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Max\",\n            last_name: \"Rebo\",\n            occupation: \"Musician\",\n            species: \"Ortolan\",\n        },\n\n        {\n            first_name: \"Mok\",\n            last_name: \"Shaiz\",\n            occupation: \"Mayor\",\n            species: \"Ithorian\",\n        },\n\n        {\n            first_name: \"Natasi\",\n            last_name: \"Daala\",\n            occupation: \"Chief of State\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Quinlan\",\n            last_name: \"Vos\",\n            occupation: \"Jedi Master\",\n            species: \"Kiffar\",\n        },\n\n        {\n            first_name: \"Tila\",\n            last_name: \"Mong\",\n            occupation: \"Baron Do Sage\",\n            species: \"Kel Dor\",\n        },\n    ];\n</script>\n\n<DataTable\n    columns={COLUMNS}\n    rows={ROWS}\n    sorting=\"occupation\"\n    sorting_mode=\"descending\"\n    palette=\"accent\"\n/>"},{"identifier":"/playground?snippet=datatable-variation","title":"DataTable Variation","text":"<script>\n    import {\n        DataTable,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n\n    const COLUMNS = [\n        {\n            text: \"First Name\",\n            key: \"first_name\",\n        },\n\n        {\n            text: \"Last Name\",\n            key: \"last_name\",\n        },\n\n        {\n            text: \"Occupation\",\n            key: \"occupation\",\n        },\n\n        {\n            text: \"Species\",\n            key: \"species\",\n        },\n    ];\n\n    const ROWS = [\n        {\n            first_name: \"Ahsoka\",\n            last_name: \"Tano\",\n            occupation: \"Unknown\",\n            species: \"Togruta\",\n        },\n\n        {\n            first_name: \"Cad\",\n            last_name: \"Bane\",\n            occupation: \"Bounty Hunter\",\n            species: \"Duros\",\n        },\n\n        {\n            first_name: \"Cobb\",\n            last_name: \"Vanth\",\n            occupation: \"Marshal\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Din\",\n            last_name: \"Djarin\",\n            occupation: \"Bounty Hunter\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Fennec\",\n            last_name: \"Shand\",\n            occupation: \"Assassin\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Gilad\",\n            last_name: \"Pellaeon\",\n            occupation: \"Grand Admiral\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Jagged\",\n            last_name: \"Fel\",\n            occupation: \"Emperor\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Max\",\n            last_name: \"Rebo\",\n            occupation: \"Musician\",\n            species: \"Ortolan\",\n        },\n\n        {\n            first_name: \"Mok\",\n            last_name: \"Shaiz\",\n            occupation: \"Mayor\",\n            species: \"Ithorian\",\n        },\n\n        {\n            first_name: \"Natasi\",\n            last_name: \"Daala\",\n            occupation: \"Chief of State\",\n            species: \"Human\",\n        },\n\n        {\n            first_name: \"Quinlan\",\n            last_name: \"Vos\",\n            occupation: \"Jedi Master\",\n            species: \"Kiffar\",\n        },\n\n        {\n            first_name: \"Tila\",\n            last_name: \"Mong\",\n            occupation: \"Baron Do Sage\",\n            species: \"Kel Dor\",\n        },\n    ];\n</script>\n\n<Stack.Container spacing=\"medium\">\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n\n        <DataTable\n            columns={COLUMNS}\n            rows={ROWS}\n            paginate\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">BORDERS</Text>\n\n        <DataTable\n            columns={COLUMNS}\n            rows={ROWS}\n            variation=\"borders\"\n            paginate\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">STRIPES</Text>\n\n        <DataTable\n            columns={COLUMNS}\n            rows={ROWS}\n            variation=\"stripes\"\n            paginate\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">BORDERS+STRIPES</Text>\n\n        <DataTable\n            columns={COLUMNS}\n            rows={ROWS}\n            variation={[\"borders\", \"stripes\"]}\n            paginate\n        />\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=datestamp-custom-format","title":"DateStamp Custom Format","text":"<script>\n    import {DateStamp} from \"@kahi-ui/framework\";\n\n    const timestamp = \"2021-11-10\";\n</script>\n\n<DateStamp\n    day=\"2-digit\"\n    month=\"long\"\n    weekday=\"long\"\n    year=\"2-digit\"\n    {timestamp}\n/>"},{"identifier":"/playground?snippet=datestamp-preview","title":"DateStamp Preview","text":"<script>\n    import {DateStamp} from \"@kahi-ui/framework\";\n\n    const timestamp = \"2021-11-10\";\n</script>\n\n<DateStamp {timestamp} />"},{"identifier":"/playground?snippet=datetimestamp-12-hour","title":"DateTimeStamp 12 Hour","text":"<script>\n    import {DateTimeStamp} from \"@kahi-ui/framework\";\n\n    const timestamp = \"2021-11-10T13:00:42-05:00\";\n</script>\n\n<DateTimeStamp hour=\"numeric\" hour_12 {timestamp} />"},{"identifier":"/playground?snippet=datetimestamp-custom-format","title":"DateTimeStamp Custom Format","text":"<script>\n    import {DateTimeStamp} from \"@kahi-ui/framework\";\n\n    const timestamp = \"2021-11-10T13:00:42-05:00\";\n</script>\n\n<DateTimeStamp\n    day=\"2-digit\"\n    month=\"long\"\n    weekday=\"long\"\n    year=\"2-digit\"\n    hour=\"2-digit\"\n    minute=\"2-digit\"\n    second=\"2-digit\"\n    hour_12\n    {timestamp}\n/>"},{"identifier":"/playground?snippet=datetimestamp-preview","title":"DateTimeStamp Preview","text":"<script>\n    import {DateTimeStamp} from \"@kahi-ui/framework\";\n\n    const timestamp = \"2021-11-10T13:00:42-05:00\";\n</script>\n\n<DateTimeStamp {timestamp} />"},{"identifier":"/playground?snippet=daypicker-custom-format","title":"DayPicker Custom Format","text":"<script>\n    import {DayPicker} from \"@kahi-ui/framework\";\n\n    const timestamp = \"2021-11-10\";\n</script>\n\n<DayPicker\n    palette=\"accent\"\n    day=\"numeric\"\n    weekday=\"long\"\n    width=\"content-max\"\n    {timestamp}\n/>"},{"identifier":"/playground?snippet=daypicker-disabled","title":"DayPicker Disabled","text":"<script>\n    import {DayPicker} from \"@kahi-ui/framework\";\n\n    const timestamp = \"2021-11-10\";\n</script>\n\n<DayPicker\n    palette=\"accent\"\n    width=\"content-max\"\n    {timestamp}\n    disabled\n/>"},{"identifier":"/playground?snippet=daypicker-disabled-days","title":"DayPicker Disabled Days","text":"<script>\n    import {DayPicker} from \"@kahi-ui/framework\";\n\n    const timestamp = \"2021-11-10\";\n\n    const disabled = [\"2021-11-05\", \"2021-11-19\"];\n</script>\n\n<DayPicker\n    palette=\"accent\"\n    width=\"content-max\"\n    {disabled}\n    {timestamp}\n/>"},{"identifier":"/playground?snippet=daypicker-highlight","title":"DayPicker Highlight","text":"<script>\n    import {DayPicker} from \"@kahi-ui/framework\";\n\n    const timestamp = \"2021-11-10\";\n\n    const highlight = [\n        \"2021-11-11\",\n        \"2021-11-12\",\n        \"2021-11-13\",\n    ];\n</script>\n\n<DayPicker\n    palette=\"accent\"\n    width=\"content-max\"\n    {highlight}\n    {timestamp}\n/>"},{"identifier":"/playground?snippet=daypicker-maximum--minimum","title":"DayPicker Maximum + Minimum","text":"<script>\n    import {DayPicker} from \"@kahi-ui/framework\";\n\n    const timestamp = \"2021-11-10\";\n\n    const max = \"2021-11-19\";\n    const min = \"2021-11-05\";\n</script>\n\n<DayPicker\n    palette=\"accent\"\n    width=\"content-max\"\n    {max}\n    {min}\n    {timestamp}\n/>"},{"identifier":"/playground?snippet=daypicker-multiple","title":"DayPicker Multiple","text":"<script>\n    import {DayPicker} from \"@kahi-ui/framework\";\n\n    const timestamp = \"2021-11-10\";\n    const value = [\"2021-11-05\", \"2021-11-19\"];\n</script>\n\n<DayPicker\n    palette=\"accent\"\n    width=\"content-max\"\n    {timestamp}\n    {value}\n    multiple\n/>"},{"identifier":"/playground?snippet=daypicker-once","title":"DayPicker Once","text":"<script>\n    import {DayPicker} from \"@kahi-ui/framework\";\n\n    const timestamp = \"2021-11-10\";\n    const value = [\"2021-11-05\"];\n</script>\n\n<DayPicker\n    palette=\"accent\"\n    width=\"content-max\"\n    {timestamp}\n    {value}\n    once\n/>"},{"identifier":"/playground?snippet=daypicker-preview","title":"DayPicker Preview","text":"<script>\n    import {DayPicker} from \"@kahi-ui/framework\";\n\n    const timestamp = \"2021-11-10\";\n    const value = [\"2021-11-05\"];\n</script>\n\n<DayPicker\n    palette=\"accent\"\n    width=\"content-max\"\n    {timestamp}\n    {value}\n/>"},{"identifier":"/playground?snippet=daypicker-readonly","title":"DayPicker Readonly","text":"<script>\n    import {DayPicker} from \"@kahi-ui/framework\";\n\n    const timestamp = \"2021-11-10\";\n</script>\n\n<DayPicker\n    palette=\"accent\"\n    width=\"content-max\"\n    {timestamp}\n    readonly\n/>"},{"identifier":"/playground?snippet=daypicker-sizing","title":"DayPicker Sizing","text":"<script>\n    import {\n        DayPicker,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n\n    const timestamp = \"2021-11-10\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    alignment_y=\"top\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n\n        <DayPicker\n            palette=\"accent\"\n            width=\"content-max\"\n            {timestamp}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">NANO</Text>\n\n        <DayPicker\n            palette=\"accent\"\n            sizing=\"nano\"\n            width=\"content-max\"\n            {timestamp}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">TINY</Text>\n\n        <DayPicker\n            palette=\"accent\"\n            sizing=\"tiny\"\n            width=\"content-max\"\n            {timestamp}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">SMALL</Text>\n\n        <DayPicker\n            palette=\"accent\"\n            sizing=\"small\"\n            width=\"content-max\"\n            {timestamp}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">MEDIUM</Text>\n\n        <DayPicker\n            palette=\"accent\"\n            sizing=\"medium\"\n            width=\"content-max\"\n            {timestamp}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">LARGE</Text>\n\n        <DayPicker\n            palette=\"accent\"\n            sizing=\"large\"\n            width=\"content-max\"\n            {timestamp}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">HUGE</Text>\n\n        <DayPicker\n            palette=\"accent\"\n            sizing=\"huge\"\n            width=\"content-max\"\n            {timestamp}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">MASSIVE</Text>\n\n        <DayPicker\n            palette=\"accent\"\n            sizing=\"massive\"\n            width=\"content-max\"\n            {timestamp}\n        />\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=daystepper-custom-format","title":"DayStepper Custom Format","text":"<script>\n    import {DayStepper} from \"@kahi-ui/framework\";\n\n    const value = \"2021-11-10\";\n</script>\n\n<DayStepper\n    palette=\"accent\"\n    day=\"numeric\"\n    month=\"numeric\"\n    weekday=\"short\"\n    {value}\n/>"},{"identifier":"/playground?snippet=daystepper-disabled","title":"DayStepper Disabled","text":"<script>\n    import {DayStepper} from \"@kahi-ui/framework\";\n\n    const value = \"2021-11-10\";\n</script>\n\n<DayStepper palette=\"accent\" {value} disabled />"},{"identifier":"/playground?snippet=daystepper-maximum--minimum","title":"DayStepper Maximum + Minimum","text":"<script>\n    import {DayStepper} from \"@kahi-ui/framework\";\n\n    const value = \"2021-11-10\";\n\n    const max = \"2021-11-13\";\n    const min = \"2021-11-07\";\n</script>\n\n<DayStepper palette=\"accent\" {max} {min} {value} />"},{"identifier":"/playground?snippet=daystepper-preview","title":"DayStepper Preview","text":"<script>\n    import {DayStepper} from \"@kahi-ui/framework\";\n\n    const value = \"2021-11-10\";\n</script>\n\n<DayStepper palette=\"accent\" {value} />"},{"identifier":"/playground?snippet=daystepper-readonly","title":"DayStepper Readonly","text":"<script>\n    import {DayStepper} from \"@kahi-ui/framework\";\n\n    const value = \"2021-11-10\";\n</script>\n\n<DayStepper palette=\"accent\" {value} readonly />"},{"identifier":"/playground?snippet=daystepper-sizing","title":"DayStepper Sizing","text":"<script>\n    import {\n        DayStepper,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n\n    const value = \"2021-11-10\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    alignment_y=\"top\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n\n        <DayStepper palette=\"accent\" {value} />\n    </div>\n\n    <div>\n        <Text is=\"strong\">NANO</Text>\n\n        <DayStepper\n            palette=\"accent\"\n            sizing=\"nano\"\n            {value}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">TINY</Text>\n\n        <DayStepper\n            palette=\"accent\"\n            sizing=\"tiny\"\n            {value}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">SMALL</Text>\n\n        <DayStepper\n            palette=\"accent\"\n            sizing=\"small\"\n            {value}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">MEDIUM</Text>\n\n        <DayStepper\n            palette=\"accent\"\n            sizing=\"medium\"\n            {value}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">LARGE</Text>\n\n        <DayStepper\n            palette=\"accent\"\n            sizing=\"large\"\n            {value}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">HUGE</Text>\n\n        <DayStepper\n            palette=\"accent\"\n            sizing=\"huge\"\n            {value}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">MASSIVE</Text>\n\n        <DayStepper\n            palette=\"accent\"\n            sizing=\"massive\"\n            {value}\n        />\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=daystepper-step","title":"DayStepper Step","text":"<script>\n    import {DayStepper} from \"@kahi-ui/framework\";\n\n    const value = \"2021-11-10\";\n</script>\n\n<DayStepper palette=\"accent\" steps={3} {value} />"},{"identifier":"/playground?snippet=divider-orientation","title":"Divider Orientation","text":"<script>\n    import {\n        Box,\n        Divider,\n        Mosaic,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    class=\"divider-orientation\"\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n        <Box palette=\"dark\" padding=\"small\">\n            <Divider />\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">VERTICAL</Text>\n        <Box\n            palette=\"dark\"\n            padding=\"small\"\n            width=\"content-min\"\n        >\n            <Divider orientation=\"vertical\" />\n        </Box>\n    </div>\n</Stack.Container>\n\n<style>\n    :global(.divider-orientation\n            > div:first-child\n            > .box) {\n        display: flex;\n        align-items: center;\n        height: 2rem;\n        width: 6rem;\n    }\n\n    :global(.divider-orientation\n            > div:last-child\n            > .box) {\n        height: 6rem;\n    }\n</style>"},{"identifier":"/playground?snippet=divider-palette","title":"Divider Palette","text":"<script>\n    import {\n        Divider,\n        Mosaic,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Mosaic.Container sizing=\"medium\" spacing=\"medium\">\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n        <Divider />\n    </div>\n\n    <div>\n        <Text is=\"strong\">ACCENT</Text>\n        <Divider palette=\"accent\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">NEUTRAL</Text>\n        <Divider palette=\"neutral\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">DARK</Text>\n        <Divider palette=\"dark\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">LIGHT</Text>\n        <Divider palette=\"light\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">ALERT</Text>\n        <Divider palette=\"alert\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">AFFIRMATIVE</Text>\n        <Divider palette=\"affirmative\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">INFORMATIVE</Text>\n        <Divider palette=\"informative\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">NEGATIVE</Text>\n        <Divider palette=\"negative\" />\n    </div>\n</Mosaic.Container>"},{"identifier":"/playground?snippet=divider-preview","title":"Divider Preview","text":"<script>\n    import {Divider} from \"@kahi-ui/framework\";\n</script>\n\n<Divider />"},{"identifier":"/playground?snippet=divider-text","title":"Divider Text","text":"<script>\n    import {\n        Box,\n        Divider,\n        Mosaic,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    class=\"divider-text\"\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <div>\n        <Box palette=\"dark\" padding=\"small\">\n            <Divider>DEFAULT</Divider>\n        </Box>\n    </div>\n\n    <div>\n        <Box palette=\"dark\" padding=\"small\">\n            <Divider orientation=\"vertical\">\n                VERTICAL\n            </Divider>\n        </Box>\n    </div>\n</Stack.Container>\n\n<style>\n    :global(.divider-text > div:first-child > .box) {\n        width: 12rem;\n    }\n\n    :global(.divider-text > div:last-child > .box) {\n        display: flex;\n        justify-content: center;\n\n        width: 3rem;\n        height: 12rem;\n    }\n</style>"},{"identifier":"/playground?snippet=dot-palette","title":"Dot Palette","text":"<script>\n    import {\n        Dot,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n        <br />\n        <Dot />\n    </div>\n\n    <div>\n        <Text is=\"strong\">ACCENT</Text>\n        <br />\n        <Dot palette=\"accent\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">NEUTRAL</Text>\n        <br />\n        <Dot palette=\"neutral\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">DARK</Text>\n        <br />\n        <Dot palette=\"dark\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">LIGHT</Text>\n        <br />\n        <Dot palette=\"light\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">ALERT</Text>\n        <br />\n        <Dot palette=\"alert\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">AFFIRMATIVE</Text>\n        <br />\n        <Dot palette=\"affirmative\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">INFORMATIVE</Text>\n        <br />\n        <Dot palette=\"informative\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">NEGATIVE</Text>\n        <br />\n        <Dot palette=\"negative\" />\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=dot-preview","title":"Dot Preview","text":"<script>\n    import {Dot} from \"@kahi-ui/framework\";\n</script>\n\n<Dot />"},{"identifier":"/playground?snippet=elements-preview","title":"Elements Preview","text":"<script>\n    import {Button} from \"@kahi-ui/framework\";\n\n    let element = null;\n\n    $: console.log({element});\n</script>\n\n<Button bind:element>I reference a button!</Button>"},{"identifier":"/playground?snippet=elevations-preview","title":"Elevations Preview","text":"<script>\n    import {Stack, Text} from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"large\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">LOWEST</Text>\n\n        <div\n            data-size=\"icon-massive\"\n            style=\"box-shadow:var(--elevations-lowest);\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">LOWER</Text>\n\n        <div\n            data-size=\"icon-massive\"\n            style=\"box-shadow:var(--elevations-lower);\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">LOW</Text>\n\n        <div\n            data-size=\"icon-massive\"\n            style=\"box-shadow:var(--elevations-low);\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">MEDIUM</Text>\n\n        <div\n            data-size=\"icon-massive\"\n            style=\"box-shadow:var(--elevations-medium);\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">HIGH</Text>\n\n        <div\n            data-size=\"icon-massive\"\n            style=\"box-shadow:var(--elevations-high);\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">HIGHER</Text>\n\n        <div\n            data-size=\"icon-massive\"\n            style=\"box-shadow:var(--elevations-higher);\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">HIGHEST</Text>\n\n        <div\n            data-size=\"icon-massive\"\n            style=\"box-shadow:var(--elevations-highest);\"\n        />\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=ellipsis-animations","title":"Ellipsis Animations","text":"<script>\n    import {\n        Dot,\n        Ellipsis,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n        <br />\n        <Ellipsis>\n            <Dot palette=\"accent\" />\n        </Ellipsis>\n    </div>\n\n    <div>\n        <Text is=\"strong\">BOUNCE</Text>\n        <br />\n        <Ellipsis animation=\"bounce\">\n            <Dot palette=\"accent\" />\n        </Ellipsis>\n    </div>\n\n    <div>\n        <Text is=\"strong\">PING</Text>\n        <br />\n        <Ellipsis animation=\"ping\">\n            <Dot palette=\"accent\" />\n        </Ellipsis>\n    </div>\n\n    <div>\n        <Text is=\"strong\">PULSE</Text>\n        <br />\n        <Ellipsis animation=\"pulse\">\n            <Dot palette=\"accent\" />\n        </Ellipsis>\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=ellipsis-iterations","title":"Ellipsis Iterations","text":"<script>\n    import {\n        Dot,\n        Ellipsis,\n        NumberInput,\n    } from \"@kahi-ui/framework\";\n\n    let iterations = 5;\n</script>\n\n<NumberInput bind:value={iterations} />\n\n<!--\n    NOTE: The animation can desync if `iterations` is changed during\n    runtime. So for the demo, a `#key` block is used to recreate the\n    Component every time `iterations` is updated\n-->\n\n{#key iterations}\n    <Ellipsis animation=\"bounce\" {iterations}>\n        <Dot palette=\"accent\" />\n    </Ellipsis>\n{/key}"},{"identifier":"/playground?snippet=ellipsis-preview","title":"Ellipsis Preview","text":"<script>\n    import {\n        Button,\n        Ellipsis,\n        Heading,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container alignment_x=\"left\" spacing=\"medium\">\n    <Button disabled>\n        <!--\n            NOTE: Wrapping text and Component together to\n            prevent `Ellipsis` from getting icon spacing\n        -->\n        <Text is=\"span\">\n            Submit<Ellipsis />\n        </Text>\n    </Button>\n\n    <Heading>\n        Loading<Ellipsis />\n    </Heading>\n</Stack.Container>"},{"identifier":"/playground?snippet=ellipsis-slot","title":"Ellipsis Slot","text":"<script>\n    import {\n        Ellipsis,\n        Heading,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Heading>\n    Loading<Ellipsis>/</Ellipsis>\n</Heading>"},{"identifier":"/playground?snippet=events-preview","title":"Events Preview","text":"<script>\n    import {Check} from \"@kahi-ui/framework\";\n\n    function on_change(event) {\n        console.log(\"I was changed to:\", state);\n    }\n\n    let state = false;\n</script>\n\n<Check bind:state on:change={on_change} />"},{"identifier":"/playground?snippet=figure-fit","title":"Figure Fit","text":"<script>\n    import {\n        Figure,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n        <Figure size=\"small\">\n            <img\n                src={IMAGE_BACKGROUND}\n                data-width=\"tiny\"\n                data-height=\"medium\"\n            />\n        </Figure>\n    </div>\n\n    <div>\n        <Text is=\"strong\">CONTAIN</Text>\n        <Figure fit=\"contain\">\n            <img\n                src={IMAGE_BACKGROUND}\n                data-width=\"tiny\"\n                data-height=\"medium\"\n            />\n        </Figure>\n    </div>\n\n    <div>\n        <Text is=\"strong\">COVER</Text>\n        <Figure fit=\"cover\">\n            <img\n                src={IMAGE_BACKGROUND}\n                data-width=\"tiny\"\n                data-height=\"medium\"\n            />\n        </Figure>\n    </div>\n\n    <div>\n        <Text is=\"strong\">FILL</Text>\n        <Figure fit=\"fill\">\n            <img\n                src={IMAGE_BACKGROUND}\n                data-width=\"tiny\"\n                data-height=\"medium\"\n            />\n        </Figure>\n    </div>\n\n    <div>\n        <Text is=\"strong\">NONE</Text>\n        <Figure fit=\"none\">\n            <img\n                src={IMAGE_BACKGROUND}\n                data-width=\"tiny\"\n                data-height=\"medium\"\n            />\n        </Figure>\n    </div>\n\n    <div>\n        <Text is=\"strong\">SCALE-DOWN</Text>\n        <Figure fit=\"scale-down\">\n            <img\n                src={IMAGE_BACKGROUND}\n                data-width=\"tiny\"\n                data-height=\"medium\"\n            />\n        </Figure>\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=figure-preview","title":"Figure Preview","text":"<script>\n    import {Figure} from \"@kahi-ui/framework\";\n</script>\n\n<Figure max_width=\"33\">\n    <img src={IMAGE_BACKGROUND} />\n</Figure>"},{"identifier":"/playground?snippet=figure-radius","title":"Figure Radius","text":"<script>\n    import {\n        Figure,\n        Mosaic,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Mosaic.Container spacing=\"medium\" sizing=\"tiny\">\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n        <Figure>\n            <img src={IMAGE_BACKGROUND} />\n        </Figure>\n    </div>\n\n    <div>\n        <Text is=\"strong\">NONE</Text>\n        <Figure radius=\"none\">\n            <img src={IMAGE_BACKGROUND} />\n        </Figure>\n    </div>\n\n    <div>\n        <Text is=\"strong\">NANO</Text>\n        <Figure radius=\"nano\">\n            <img src={IMAGE_BACKGROUND} />\n        </Figure>\n    </div>\n\n    <div>\n        <Text is=\"strong\">TINY</Text>\n        <Figure radius=\"tiny\">\n            <img src={IMAGE_BACKGROUND} />\n        </Figure>\n    </div>\n\n    <div>\n        <Text is=\"strong\">SMALL</Text>\n        <Figure radius=\"small\">\n            <img src={IMAGE_BACKGROUND} />\n        </Figure>\n    </div>\n\n    <div>\n        <Text is=\"strong\">MEDIUM</Text>\n        <Figure radius=\"medium\">\n            <img src={IMAGE_BACKGROUND} />\n        </Figure>\n    </div>\n\n    <div>\n        <Text is=\"strong\">LARGE</Text>\n        <Figure radius=\"large\">\n            <img src={IMAGE_BACKGROUND} />\n        </Figure>\n    </div>\n\n    <div>\n        <Text is=\"strong\">HUGE</Text>\n        <Figure radius=\"huge\">\n            <img src={IMAGE_BACKGROUND} />\n        </Figure>\n    </div>\n\n    <div>\n        <Text is=\"strong\">MASSIVE</Text>\n        <Figure radius=\"massive\">\n            <img src={IMAGE_BACKGROUND} />\n        </Figure>\n    </div>\n</Mosaic.Container>"},{"identifier":"/playground?snippet=figure-shape","title":"Figure Shape","text":"<script>\n    import {\n        Figure,\n        Mosaic,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Mosaic.Container spacing=\"medium\" sizing=\"tiny\">\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n        <Figure>\n            <img src={IMAGE_BACKGROUND} />\n        </Figure>\n    </div>\n\n    <div>\n        <Text is=\"strong\">CIRCLE</Text>\n        <Figure shape=\"circle\">\n            <img src={IMAGE_BACKGROUND} />\n        </Figure>\n    </div>\n\n    <div>\n        <Text is=\"strong\">PILL</Text>\n        <Figure shape=\"pill\">\n            <img src={IMAGE_BACKGROUND} />\n        </Figure>\n    </div>\n</Mosaic.Container>"},{"identifier":"/playground?snippet=filedropinput-palette","title":"FileDropInput Palette","text":"<script>\n    import {\n        FileDropInput,\n        Mosaic,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Mosaic.Container sizing=\"medium\" spacing=\"medium\">\n    <FileDropInput>\n        <Stack.Container spacing=\"medium\">\n            <Text\n                is=\"strong\"\n                variation=\"block\"\n                sizing=\"large\"\n            >\n                &uparrow;\n            </Text>\n\n            <Text>DEFAULT</Text>\n        </Stack.Container>\n    </FileDropInput>\n\n    <FileDropInput palette=\"accent\">\n        <Stack.Container spacing=\"medium\">\n            <Text\n                is=\"strong\"\n                variation=\"block\"\n                sizing=\"large\"\n            >\n                &uparrow;\n            </Text>\n\n            <Text>ACCENT</Text>\n        </Stack.Container>\n    </FileDropInput>\n\n    <FileDropInput palette=\"neutral\">\n        <Stack.Container spacing=\"medium\">\n            <Text\n                is=\"strong\"\n                variation=\"block\"\n                sizing=\"large\"\n            >\n                &uparrow;\n            </Text>\n\n            <Text>NEUTRAL</Text>\n        </Stack.Container>\n    </FileDropInput>\n\n    <FileDropInput palette=\"dark\">\n        <Stack.Container spacing=\"medium\">\n            <Text\n                is=\"strong\"\n                variation=\"block\"\n                sizing=\"large\"\n            >\n                &uparrow;\n            </Text>\n\n            <Text>DARK</Text>\n        </Stack.Container>\n    </FileDropInput>\n\n    <FileDropInput palette=\"light\">\n        <Stack.Container spacing=\"medium\">\n            <Text\n                is=\"strong\"\n                variation=\"block\"\n                sizing=\"large\"\n            >\n                &uparrow;\n            </Text>\n\n            <Text>LIGHT</Text>\n        </Stack.Container>\n    </FileDropInput>\n\n    <FileDropInput palette=\"alert\">\n        <Stack.Container spacing=\"medium\">\n            <Text\n                is=\"strong\"\n                variation=\"block\"\n                sizing=\"large\"\n            >\n                &uparrow;\n            </Text>\n\n            <Text>ALERT</Text>\n        </Stack.Container>\n    </FileDropInput>\n\n    <FileDropInput palette=\"affirmative\">\n        <Stack.Container spacing=\"medium\">\n            <Text\n                is=\"strong\"\n                variation=\"block\"\n                sizing=\"large\"\n            >\n                &uparrow;\n            </Text>\n\n            <Text>AFFIRMATIVE</Text>\n        </Stack.Container>\n    </FileDropInput>\n\n    <FileDropInput palette=\"informative\">\n        <Stack.Container spacing=\"medium\">\n            <Text\n                is=\"strong\"\n                variation=\"block\"\n                sizing=\"large\"\n            >\n                &uparrow;\n            </Text>\n\n            <Text>INFORMATIVE</Text>\n        </Stack.Container>\n    </FileDropInput>\n\n    <FileDropInput palette=\"negative\">\n        <Stack.Container spacing=\"medium\">\n            <Text\n                is=\"strong\"\n                variation=\"block\"\n                sizing=\"large\"\n            >\n                &uparrow;\n            </Text>\n\n            <Text>NEGATIVE</Text>\n        </Stack.Container>\n    </FileDropInput>\n</Mosaic.Container>"},{"identifier":"/playground?snippet=filedropinput-preview","title":"FileDropInput Preview","text":"<script>\n    import {\n        Button,\n        FileDropInput,\n        Stack,\n        Text,\n        Tile,\n    } from \"@kahi-ui/framework\";\n    import {X} from \"lucide-svelte\";\n\n    function on_change(event) {\n        if (!event.isTrusted) return;\n\n        const {target} = event;\n\n        files = [\n            ...files,\n            ...Array.from(target.files),\n        ];\n\n        target.value = \"\";\n    }\n\n    function on_clear_click(event) {\n        files = [];\n    }\n\n    function on_remove_click(event, file) {\n        files = files.filter(\n            (_file) => file !== _file\n        );\n    }\n\n    let files = [];\n</script>\n\n<FileDropInput multiple on:change={on_change}>\n    <Stack.Container spacing=\"medium\">\n        <Text\n            is=\"strong\"\n            variation=\"block\"\n            sizing=\"large\"\n        >\n            &uparrow;\n        </Text>\n\n        <Text>Drag-and-drop files here...</Text>\n    </Stack.Container>\n</FileDropInput>\n\n{#if files.length > 0}\n    <Stack.Container\n        spacing=\"medium\"\n        margin_y=\"medium\"\n    >\n        {#each files as file (file.name)}\n            <Tile.Container sizing=\"small\">\n                <Tile.Section>\n                    <Tile.Header>\n                        {file.name}\n                    </Tile.Header>\n\n                    <Text>{file.type}</Text>\n                </Tile.Section>\n\n                <Tile.Footer>\n                    <Button\n                        variation=\"clear\"\n                        sizing=\"small\"\n                        palette=\"negative\"\n                        on:click={(event) =>\n                            on_remove_click(\n                                event,\n                                file\n                            )}\n                    >\n                        <X size=\"1em\" />\n                    </Button>\n                </Tile.Footer>\n            </Tile.Container>\n        {/each}\n    </Stack.Container>\n\n    <Stack.Container alignment_x=\"right\">\n        <Button\n            variation=\"clear\"\n            palette=\"negative\"\n            on:click={on_clear_click}\n        >\n            Clear All\n        </Button>\n    </Stack.Container>\n{/if}"},{"identifier":"/playground?snippet=fonts-block-sizes","title":"Fonts Block Sizes","text":"<script>\n    import {Stack, Text} from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <div style=\"max-width:25ch;\">\n        <Text is=\"strong\">NANO</Text>\n\n        <p\n            style=\"font-size:calc(var(--fonts-sizes-block-nano) * 1rem);\"\n        >\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit.\n        </p>\n    </div>\n\n    <div style=\"max-width:25ch;\">\n        <Text is=\"strong\">TINY</Text>\n\n        <p\n            style=\"font-size:calc(var(--fonts-sizes-block-tiny) * 1rem);\"\n        >\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit.\n        </p>\n    </div>\n\n    <div style=\"max-width:25ch;\">\n        <Text is=\"strong\">SMALL</Text>\n\n        <p\n            style=\"font-size:calc(var(--fonts-sizes-block-small) * 1rem);\"\n        >\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit.\n        </p>\n    </div>\n\n    <div style=\"max-width:25ch;\">\n        <Text is=\"strong\">MEDIUM</Text>\n\n        <p\n            style=\"font-size:calc(var(--fonts-sizes-block-medium) * 1rem);\"\n        >\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit.\n        </p>\n    </div>\n\n    <div style=\"max-width:25ch;\">\n        <Text is=\"strong\">LARGE</Text>\n\n        <p\n            style=\"font-size:calc(var(--fonts-sizes-block-large) * 1rem);\"\n        >\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit.\n        </p>\n    </div>\n\n    <div style=\"max-width:25ch;\">\n        <Text is=\"strong\">HUGE</Text>\n\n        <p\n            style=\"font-size:calc(var(--fonts-sizes-block-huge) * 1rem);\"\n        >\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit.\n        </p>\n    </div>\n\n    <div style=\"max-width:25ch;\">\n        <Text is=\"strong\">MASSIVE</Text>\n\n        <p\n            style=\"font-size:calc(var(--fonts-sizes-block-massive) * 1rem);\"\n        >\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit.\n        </p>\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=fonts-families","title":"Fonts Families","text":"<script>\n    import {Stack, Text} from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <div style=\"max-width:25ch;\">\n        <Text is=\"strong\">BLOCK</Text>\n\n        <p\n            style=\"font-family:var(--fonts-families-block);\"\n        >\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </p>\n    </div>\n\n    <div style=\"max-width:25ch;\">\n        <Text is=\"strong\">INLINE</Text>\n\n        <p\n            style=\"font-family:var(--fonts-families-inline);\"\n        >\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </p>\n    </div>\n\n    <div style=\"max-width:25ch;\">\n        <Text is=\"strong\">MONOSPACE</Text>\n\n        <p\n            style=\"font-family:var(--fonts-families-monospace);\"\n        >\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </p>\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=fonts-inline-sizes","title":"Fonts Inline Sizes","text":"<script>\n    import {Stack, Text} from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <div style=\"max-width:25ch;\">\n        <Text is=\"strong\">NANO</Text>\n\n        <p\n            style=\"font-size:calc(var(--fonts-sizes-inline-nano) * 1rem);\"\n        >\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </p>\n    </div>\n\n    <div style=\"max-width:25ch;\">\n        <Text is=\"strong\">TINY</Text>\n\n        <p\n            style=\"font-size:calc(var(--fonts-sizes-inline-tiny) * 1rem);\"\n        >\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </p>\n    </div>\n\n    <div style=\"max-width:25ch;\">\n        <Text is=\"strong\">SMALL</Text>\n\n        <p\n            style=\"font-size:calc(var(--fonts-sizes-inline-small) * 1rem);\"\n        >\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </p>\n    </div>\n\n    <div style=\"max-width:25ch;\">\n        <Text is=\"strong\">MEDIUM</Text>\n\n        <p\n            style=\"font-size:calc(var(--fonts-sizes-inline-medium) * 1rem);\"\n        >\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </p>\n    </div>\n\n    <div style=\"max-width:25ch;\">\n        <Text is=\"strong\">LARGE</Text>\n\n        <p\n            style=\"font-size:calc(var(--fonts-sizes-inline-large) * 1rem);\"\n        >\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </p>\n    </div>\n\n    <div style=\"max-width:25ch;\">\n        <Text is=\"strong\">HUGE</Text>\n\n        <p\n            style=\"font-size:calc(var(--fonts-sizes-inline-huge) * 1rem);\"\n        >\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </p>\n    </div>\n\n    <div style=\"max-width:25ch;\">\n        <Text is=\"strong\">MASSIVE</Text>\n\n        <p\n            style=\"font-size:calc(var(--fonts-sizes-inline-massive) * 1rem);\"\n        >\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </p>\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=fonts-line-heights","title":"Fonts Line Heights","text":"<script>\n    import {Stack, Text} from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <div style=\"max-width:25ch;\">\n        <Text is=\"strong\">NANO</Text>\n\n        <p\n            style=\"line-height:calc(var(--fonts-line-heights-nano) * 1rem);\"\n        >\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </p>\n    </div>\n\n    <div style=\"max-width:25ch;\">\n        <Text is=\"strong\">TINY</Text>\n\n        <p\n            style=\"line-height:calc(var(--fonts-line-heights-tiny) * 1rem);\"\n        >\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </p>\n    </div>\n\n    <div style=\"max-width:25ch;\">\n        <Text is=\"strong\">SMALL</Text>\n\n        <p\n            style=\"line-height:calc(var(--fonts-line-heights-small) * 1rem);\"\n        >\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </p>\n    </div>\n\n    <div style=\"max-width:25ch;\">\n        <Text is=\"strong\">MEDIUM</Text>\n\n        <p\n            style=\"line-height:calc(var(--fonts-line-heights-medium) * 1rem);\"\n        >\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </p>\n    </div>\n\n    <div style=\"max-width:25ch;\">\n        <Text is=\"strong\">LARGE</Text>\n\n        <p\n            style=\"line-height:calc(var(--fonts-line-heights-large) * 1rem);\"\n        >\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </p>\n    </div>\n\n    <div style=\"max-width:25ch;\">\n        <Text is=\"strong\">HUGE</Text>\n\n        <p\n            style=\"line-height:calc(var(--fonts-line-heights-huge) * 1rem);\"\n        >\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </p>\n    </div>\n\n    <div style=\"max-width:25ch;\">\n        <Text is=\"strong\">MASSIVE</Text>\n\n        <p\n            style=\"line-height:calc(var(--fonts-line-heights-massive) * 1rem);\"\n        >\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </p>\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=form-control","title":"Form Control","text":"<script>\n    import {\n        Code,\n        Form,\n        TextInput,\n    } from \"@kahi-ui/framework\";\n\n    let value = \"sample@sample.org\";\n</script>\n\n<Form.Control logic_id=\"form-control\">\n    <Form.Label>\n        Register E-Mail for Newsletter\n    </Form.Label>\n\n    <TextInput bind:value />\n    <Form.HelpText>\n        Make sure to enter a valid E-Mail Address, e.g.\n        <Code>sample@sample.org</Code>\n    </Form.HelpText>\n</Form.Control>"},{"identifier":"/playground?snippet=form-group","title":"Form Group","text":"<script>\n    import {\n        Form,\n        Radio,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n\n    let logic_state = \"vanilla\";\n</script>\n\n<Text is=\"strong\">\n    Select an Ice Cream Flavor\n    <Text is=\"sup\">{logic_state}</Text>\n</Text>\n\n<Stack.Container spacing=\"small\" margin_top=\"small\">\n    <Form.Group\n        logic_name=\"form-group\"\n        bind:logic_state\n    >\n        <Radio\n            id=\"form-group-bubblegum\"\n            palette=\"accent\"\n            sizing=\"tiny\"\n            value=\"bubblegum\"\n        >\n            Bubblegum\n        </Radio>\n\n        <Radio\n            id=\"form-group-chocolate\"\n            palette=\"accent\"\n            sizing=\"tiny\"\n            value=\"chocolate\"\n        >\n            Chocolate\n        </Radio>\n\n        <Radio\n            id=\"form-group-vanilla\"\n            palette=\"accent\"\n            sizing=\"tiny\"\n            value=\"vanilla\"\n        >\n            Vanilla\n        </Radio>\n    </Form.Group>\n</Stack.Container>"},{"identifier":"/playground?snippet=form-helptext","title":"Form HelpText","text":"<script>\n    import {Form, TextInput} from \"@kahi-ui/framework\";\n</script>\n\n<TextInput type=\"password\" />\n<Form.HelpText>\n    passwords must be 8+ characters at minimum\n</Form.HelpText>"},{"identifier":"/playground?snippet=form-label","title":"Form Label","text":"<script>\n    import {Check, Form} from \"@kahi-ui/framework\";\n</script>\n\n<Form.Label for=\"form-label-group\">\n    <Check />\n    Click me!\n</Form.Label>"},{"identifier":"/playground?snippet=form-legend","title":"Form Legend","text":"<script>\n    import {Form} from \"@kahi-ui/framework\";\n</script>\n\n<Form.Legend>VEGETABLES</Form.Legend>"},{"identifier":"/playground?snippet=form-legend-1","title":"Form Legend","text":"<script>\n    import {\n        Form,\n        Stack,\n        TextInput,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Form.FieldSet>\n    <Form.Legend>Personal Details</Form.Legend>\n\n    <Stack.Container spacing=\"medium\">\n        <Form.Control\n            logic_id=\"form-fieldset-first-name\"\n            logic_name=\"form-fieldset-first-name\"\n        >\n            <Form.Label>First Name</Form.Label>\n            <TextInput value=\"John\" />\n        </Form.Control>\n\n        <Form.Control\n            logic_id=\"form-fieldset-first-name\"\n            logic_name=\"form-fieldset-first-name\"\n        >\n            <Form.Label>Last Name</Form.Label>\n            <TextInput value=\"Smith\" />\n        </Form.Control>\n    </Stack.Container>\n</Form.FieldSet>"},{"identifier":"/playground?snippet=getting-started-patterns","title":"Getting Started Patterns","text":"<script>\n    import {\n        Button,\n        Card,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Card.Container class=\"getting-started-patterns\">\n    <Card.Figure>\n        <img src={IMAGE_BACKGROUND} />\n    </Card.Figure>\n\n    <Card.Header>Lorem Ipsum</Card.Header>\n\n    <Card.Section>\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </Card.Section>\n\n    <Card.Footer>\n        <Button palette=\"affirmative\">\n            Open Details\n        </Button>\n    </Card.Footer>\n</Card.Container>\n\n<style>\n    :global(.getting-started-patterns) {\n        max-width: 35ch;\n    }\n</style>"},{"identifier":"/playground?snippet=getting-started-usage","title":"Getting Started Usage","text":"<script>\n    import {Button, Heading} from \"@kahi-ui/framework\";\n\n    let clicks = 0;\n\n    function on_click(event) {\n        clicks++;\n    }\n</script>\n\n<Heading>\n    Clicks: {clicks}\n</Heading>\n\n<Button on:click={on_click}>Add +1</Button>"},{"identifier":"/playground?snippet=grid-item-span","title":"Grid Item Span","text":"<script>\n    import {Box, Grid} from \"@kahi-ui/framework\";\n</script>\n\n<Grid.Container\n    class=\"grid-item-span\"\n    points={[\"4\", \"mobile:2\"]}\n    spacing=\"medium\"\n>\n    <Box palette=\"alert\" />\n    <Grid.Item\n        span_x={[\"2\", \"mobile:1\"]}\n        span_y={[\"1\", \"mobile:2\"]}\n    >\n        <Box palette=\"affirmative\" />\n    </Grid.Item>\n    <Box palette=\"negative\" />\n\n    <Box palette=\"affirmative\" />\n    <Box palette=\"negative\" />\n    <Box palette=\"alert\" />\n\n    <Box palette=\"alert\" />\n    <Box palette=\"affirmative\" />\n    <Box palette=\"negative\" />\n</Grid.Container>\n\n<style>\n    :global(.grid-item-span > *) {\n        min-height: 3rem;\n    }\n</style>"},{"identifier":"/playground?snippet=grid-points","title":"Grid Points","text":"<script>\n    import {\n        Box,\n        Grid,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    class=\"grid-points\"\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">12</Text>\n        <Box palette=\"inverse\" padding=\"small\">\n            <Grid.Container\n                points=\"12\"\n                spacing=\"medium\"\n            >\n                <Box palette=\"alert\" />\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n            </Grid.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">11</Text>\n        <Box palette=\"inverse\" padding=\"small\">\n            <Grid.Container\n                points=\"11\"\n                spacing=\"medium\"\n            >\n                <Box palette=\"alert\" />\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n            </Grid.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">10</Text>\n        <Box palette=\"inverse\" padding=\"small\">\n            <Grid.Container\n                points=\"10\"\n                spacing=\"medium\"\n            >\n                <Box palette=\"alert\" />\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n            </Grid.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">9</Text>\n        <Box palette=\"inverse\" padding=\"small\">\n            <Grid.Container\n                points=\"9\"\n                spacing=\"medium\"\n            >\n                <Box palette=\"alert\" />\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n            </Grid.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">8</Text>\n        <Box palette=\"inverse\" padding=\"small\">\n            <Grid.Container\n                points=\"8\"\n                spacing=\"medium\"\n            >\n                <Box palette=\"alert\" />\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n            </Grid.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">7</Text>\n        <Box palette=\"inverse\" padding=\"small\">\n            <Grid.Container\n                points=\"7\"\n                spacing=\"medium\"\n            >\n                <Box palette=\"alert\" />\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n            </Grid.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">6</Text>\n        <Box palette=\"inverse\" padding=\"small\">\n            <Grid.Container\n                points=\"6\"\n                spacing=\"medium\"\n            >\n                <Box palette=\"alert\" />\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n            </Grid.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">5</Text>\n        <Box palette=\"inverse\" padding=\"small\">\n            <Grid.Container\n                points=\"5\"\n                spacing=\"medium\"\n            >\n                <Box palette=\"alert\" />\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n            </Grid.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">4</Text>\n        <Box palette=\"inverse\" padding=\"small\">\n            <Grid.Container\n                points=\"4\"\n                spacing=\"medium\"\n            >\n                <Box palette=\"alert\" />\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n            </Grid.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">3</Text>\n        <Box palette=\"inverse\" padding=\"small\">\n            <Grid.Container\n                points=\"3\"\n                spacing=\"medium\"\n            >\n                <Box palette=\"alert\" />\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n            </Grid.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">2</Text>\n        <Box palette=\"inverse\" padding=\"small\">\n            <Grid.Container\n                points=\"2\"\n                spacing=\"medium\"\n            >\n                <Box palette=\"alert\" />\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n            </Grid.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">1</Text>\n        <Box palette=\"inverse\" padding=\"small\">\n            <Grid.Container\n                points=\"1\"\n                spacing=\"medium\"\n            >\n                <Box palette=\"alert\" />\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n            </Grid.Container>\n        </Box>\n    </div>\n</Stack.Container>\n\n<style>\n    :global(.grid-points .grid) {\n        width: 14rem;\n    }\n\n    :global(.grid-points .grid .box) {\n        height: 3rem;\n    }\n</style>"},{"identifier":"/playground?snippet=grid-preview","title":"Grid Preview","text":"<script>\n    import {Box, Grid} from \"@kahi-ui/framework\";\n</script>\n\n<Grid.Container\n    class=\"grid-preview\"\n    points={[\"6\", \"mobile:3\", \"tablet:4\", \"desktop:5\"]}\n    spacing=\"medium\"\n>\n    <Box palette=\"alert\" />\n    <Box palette=\"affirmative\" />\n    <Box palette=\"negative\" />\n\n    <Box palette=\"affirmative\" />\n    <Box palette=\"negative\" />\n    <Box palette=\"alert\" />\n\n    <Box palette=\"alert\" />\n    <Box palette=\"affirmative\" />\n    <Box palette=\"negative\" />\n\n    <Box palette=\"negative\" />\n    <Box palette=\"alert\" />\n    <Box palette=\"affirmative\" />\n\n    <Box palette=\"affirmative\" />\n    <Box palette=\"negative\" />\n    <Box palette=\"alert\" />\n</Grid.Container>\n\n<style>\n    :global(.grid-preview .box) {\n        height: 3rem;\n    }\n</style>"},{"identifier":"/playground?snippet=grid-spacing","title":"Grid Spacing","text":"<script>\n    import {\n        Box,\n        Grid,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    class=\"grid-spacing\"\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n        <Box palette=\"inverse\" padding=\"small\">\n            <Grid.Container points=\"3\">\n                <Box palette=\"alert\" />\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n            </Grid.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">TINY</Text>\n        <Box palette=\"inverse\" padding=\"small\">\n            <Grid.Container points=\"3\" spacing=\"tiny\">\n                <Box palette=\"alert\" />\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n            </Grid.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">SMALL</Text>\n        <Box palette=\"inverse\" padding=\"small\">\n            <Grid.Container points=\"3\" spacing=\"small\">\n                <Box palette=\"alert\" />\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n            </Grid.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">MEDIUM</Text>\n        <Box palette=\"inverse\" padding=\"small\">\n            <Grid.Container\n                points=\"3\"\n                spacing=\"medium\"\n            >\n                <Box palette=\"alert\" />\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n            </Grid.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">LARGE</Text>\n        <Box palette=\"inverse\" padding=\"small\">\n            <Grid.Container points=\"3\" spacing=\"large\">\n                <Box palette=\"alert\" />\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n            </Grid.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">HUGE</Text>\n        <Box palette=\"inverse\" padding=\"small\">\n            <Grid.Container points=\"3\" spacing=\"huge\">\n                <Box palette=\"alert\" />\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n                <Box palette=\"alert\" />\n            </Grid.Container>\n        </Box>\n    </div>\n</Stack.Container>\n\n<style>\n    :global(.grid-spacing .grid) {\n        width: 12rem;\n    }\n\n    :global(.grid-spacing .grid .box) {\n        height: 3rem;\n    }\n</style>"},{"identifier":"/playground?snippet=group-orientation","title":"Group Orientation","text":"<script>\n    import {\n        Button,\n        Box,\n        Group,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n        <Box palette=\"inverse\" padding=\"small\">\n            <Group>\n                <Button>Button 1</Button>\n                <Button>Button 2</Button>\n                <Button>Button 3</Button>\n            </Group>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">VERTICAL</Text>\n        <Box palette=\"inverse\" padding=\"small\">\n            <Group orientation=\"vertical\">\n                <Button>Button 1</Button>\n                <Button>Button 2</Button>\n                <Button>Button 3</Button>\n            </Group>\n        </Box>\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=group-preview","title":"Group Preview","text":"<script>\n    import {Button, Group} from \"@kahi-ui/framework\";\n</script>\n\n<Group>\n    <Button>Button 1</Button>\n    <Button>Button 2</Button>\n    <Button>Button 3</Button>\n</Group>"},{"identifier":"/playground?snippet=group-spacing","title":"Group Spacing","text":"<script>\n    import {\n        Center,\n        Figure,\n        Group,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container spacing=\"medium\">\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n        <br />\n        <Group variation=\"stacked\">\n            <Figure size=\"icon-medium\" shape=\"circle\">\n                <img src={IMAGE_AVATAR} />\n            </Figure>\n\n            <Figure size=\"icon-medium\" shape=\"circle\">\n                <img src={IMAGE_AVATAR} />\n            </Figure>\n\n            <Figure size=\"icon-medium\" shape=\"circle\">\n                <img src={IMAGE_AVATAR} />\n            </Figure>\n\n            <Center padding_left=\"small\">\n                <Text is=\"small\">+7</Text>\n            </Center>\n        </Group>\n    </div>\n\n    <div>\n        <Text is=\"strong\">NANO</Text>\n        <br />\n        <Group variation=\"stacked\" spacing=\"nano\">\n            <Figure size=\"icon-medium\" shape=\"circle\">\n                <img src={IMAGE_AVATAR} />\n            </Figure>\n\n            <Figure size=\"icon-medium\" shape=\"circle\">\n                <img src={IMAGE_AVATAR} />\n            </Figure>\n\n            <Figure size=\"icon-medium\" shape=\"circle\">\n                <img src={IMAGE_AVATAR} />\n            </Figure>\n\n            <Center padding_left=\"small\">\n                <Text is=\"small\">+7</Text>\n            </Center>\n        </Group>\n    </div>\n\n    <div>\n        <Text is=\"strong\">TINY</Text>\n        <br />\n        <Group variation=\"stacked\" spacing=\"tiny\">\n            <Figure size=\"icon-medium\" shape=\"circle\">\n                <img src={IMAGE_AVATAR} />\n            </Figure>\n\n            <Figure size=\"icon-medium\" shape=\"circle\">\n                <img src={IMAGE_AVATAR} />\n            </Figure>\n\n            <Figure size=\"icon-medium\" shape=\"circle\">\n                <img src={IMAGE_AVATAR} />\n            </Figure>\n\n            <Center padding_left=\"small\">\n                <Text is=\"small\">+7</Text>\n            </Center>\n        </Group>\n    </div>\n\n    <div>\n        <Text is=\"strong\">SMALL</Text>\n        <br />\n        <Group variation=\"stacked\" spacing=\"small\">\n            <Figure size=\"icon-medium\" shape=\"circle\">\n                <img src={IMAGE_AVATAR} />\n            </Figure>\n\n            <Figure size=\"icon-medium\" shape=\"circle\">\n                <img src={IMAGE_AVATAR} />\n            </Figure>\n\n            <Figure size=\"icon-medium\" shape=\"circle\">\n                <img src={IMAGE_AVATAR} />\n            </Figure>\n\n            <Center padding_left=\"small\">\n                <Text is=\"small\">+7</Text>\n            </Center>\n        </Group>\n    </div>\n\n    <div>\n        <Text is=\"strong\">MEDIUM</Text>\n        <br />\n        <Group variation=\"stacked\" spacing=\"medium\">\n            <Figure size=\"icon-medium\" shape=\"circle\">\n                <img src={IMAGE_AVATAR} />\n            </Figure>\n\n            <Figure size=\"icon-medium\" shape=\"circle\">\n                <img src={IMAGE_AVATAR} />\n            </Figure>\n\n            <Figure size=\"icon-medium\" shape=\"circle\">\n                <img src={IMAGE_AVATAR} />\n            </Figure>\n\n            <Center padding_left=\"small\">\n                <Text is=\"small\">+7</Text>\n            </Center>\n        </Group>\n    </div>\n\n    <div>\n        <Text is=\"strong\">LARGE</Text>\n        <br />\n        <Group variation=\"stacked\" spacing=\"large\">\n            <Figure size=\"icon-medium\" shape=\"circle\">\n                <img src={IMAGE_AVATAR} />\n            </Figure>\n\n            <Figure size=\"icon-medium\" shape=\"circle\">\n                <img src={IMAGE_AVATAR} />\n            </Figure>\n\n            <Figure size=\"icon-medium\" shape=\"circle\">\n                <img src={IMAGE_AVATAR} />\n            </Figure>\n\n            <Center padding_left=\"small\">\n                <Text is=\"small\">+7</Text>\n            </Center>\n        </Group>\n    </div>\n\n    <div>\n        <Text is=\"strong\">HUGE</Text>\n        <br />\n        <Group variation=\"stacked\" spacing=\"huge\">\n            <Figure size=\"icon-medium\" shape=\"circle\">\n                <img src={IMAGE_AVATAR} />\n            </Figure>\n\n            <Figure size=\"icon-medium\" shape=\"circle\">\n                <img src={IMAGE_AVATAR} />\n            </Figure>\n\n            <Figure size=\"icon-medium\" shape=\"circle\">\n                <img src={IMAGE_AVATAR} />\n            </Figure>\n\n            <Center padding_left=\"small\">\n                <Text is=\"small\">+7</Text>\n            </Center>\n        </Group>\n    </div>\n\n    <div>\n        <Text is=\"strong\">MASSIVE</Text>\n        <br />\n        <Group variation=\"stacked\" spacing=\"massive\">\n            <Figure size=\"icon-medium\" shape=\"circle\">\n                <img src={IMAGE_AVATAR} />\n            </Figure>\n\n            <Figure size=\"icon-medium\" shape=\"circle\">\n                <img src={IMAGE_AVATAR} />\n            </Figure>\n\n            <Figure size=\"icon-medium\" shape=\"circle\">\n                <img src={IMAGE_AVATAR} />\n            </Figure>\n\n            <Center padding_left=\"small\">\n                <Text is=\"small\">+7</Text>\n            </Center>\n        </Group>\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=group-stacked","title":"Group Stacked","text":"<script>\n    import {\n        Center,\n        Figure,\n        Group,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n        <br />\n        <Group variation=\"stacked\">\n            <Figure size=\"icon-medium\" shape=\"circle\">\n                <img src={IMAGE_AVATAR} />\n            </Figure>\n\n            <Figure size=\"icon-medium\" shape=\"circle\">\n                <img src={IMAGE_AVATAR} />\n            </Figure>\n\n            <Figure size=\"icon-medium\" shape=\"circle\">\n                <img src={IMAGE_AVATAR} />\n            </Figure>\n\n            <Center padding_left=\"small\">\n                <Text is=\"small\">+7</Text>\n            </Center>\n        </Group>\n    </div>\n\n    <div>\n        <Text is=\"strong\">VERTICAL</Text>\n        <br />\n        <Group\n            variation=\"stacked\"\n            orientation=\"vertical\"\n        >\n            <Figure size=\"icon-medium\" shape=\"circle\">\n                <img src={IMAGE_AVATAR} />\n            </Figure>\n\n            <Figure size=\"icon-medium\" shape=\"circle\">\n                <img src={IMAGE_AVATAR} />\n            </Figure>\n\n            <Figure size=\"icon-medium\" shape=\"circle\">\n                <img src={IMAGE_AVATAR} />\n            </Figure>\n\n            <Center padding_top=\"small\">\n                <Text is=\"small\">+7</Text>\n            </Center>\n        </Group>\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=heading-alignment","title":"Heading Alignment","text":"<script>\n    import {\n        Heading,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container spacing=\"medium\">\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n        <Heading>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien.\n        </Heading>\n    </div>\n\n    <div>\n        <Text is=\"strong\">CENTER</Text>\n        <Heading alignment_x=\"center\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien.\n        </Heading>\n    </div>\n\n    <div>\n        <Text is=\"strong\">JUSTIFY</Text>\n        <Heading alignment_x=\"justify\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien.\n        </Heading>\n    </div>\n\n    <div>\n        <Text is=\"strong\">LEFT</Text>\n        <Heading alignment_x=\"left\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien.\n        </Heading>\n    </div>\n\n    <div>\n        <Text is=\"strong\">RIGHT</Text>\n        <Heading alignment_x=\"right\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien.\n        </Heading>\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=heading-palette","title":"Heading Palette","text":"<script>\n    import {\n        Heading,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    class=\"heading-palette\"\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n        <Heading>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien.\n        </Heading>\n    </div>\n\n    <div>\n        <Text is=\"strong\">ACCENT</Text>\n        <Heading palette=\"accent\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien.\n        </Heading>\n    </div>\n\n    <div>\n        <Text is=\"strong\">NEUTRAL</Text>\n        <Heading palette=\"neutral\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien.\n        </Heading>\n    </div>\n\n    <div>\n        <Text is=\"strong\">DARK</Text>\n        <Heading palette=\"dark\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien.\n        </Heading>\n    </div>\n\n    <div>\n        <Text is=\"strong\">LIGHT</Text>\n        <Heading palette=\"light\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien.\n        </Heading>\n    </div>\n\n    <div>\n        <Text is=\"strong\">ALERT</Text>\n        <Heading palette=\"alert\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien.\n        </Heading>\n    </div>\n\n    <div>\n        <Text is=\"strong\">AFFIRMATIVE</Text>\n        <Heading palette=\"affirmative\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien.\n        </Heading>\n    </div>\n\n    <div>\n        <Text is=\"strong\">INFORMATIVE</Text>\n        <Heading palette=\"informative\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien.\n        </Heading>\n    </div>\n\n    <div>\n        <Text is=\"strong\">NEGATIVE</Text>\n        <Heading palette=\"negative\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien.\n        </Heading>\n    </div>\n</Stack.Container>\n\n<style>\n    :global(.heading-palette > div) {\n        max-width: 25ch;\n    }\n</style>"},{"identifier":"/playground?snippet=heading-preview","title":"Heading Preview","text":"<script>\n    import {Heading} from \"@kahi-ui/framework\";\n</script>\n\n<Heading>\n    Lorem ipsum dolor sit amet, consectetur adipiscing\n    elit.\n</Heading>"},{"identifier":"/playground?snippet=heading-sizing-block","title":"Heading Sizing Block","text":"<script>\n    import {\n        Heading,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    class=\"heading-sizing-block\"\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">H1</Text>\n        <Heading is=\"h1\" variation=\"block\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien.\n        </Heading>\n    </div>\n\n    <div>\n        <Text is=\"strong\">H2</Text>\n        <Heading is=\"h2\" variation=\"block\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien.\n        </Heading>\n    </div>\n\n    <div>\n        <Text is=\"strong\">H3</Text>\n        <Heading is=\"h3\" variation=\"block\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien.\n        </Heading>\n    </div>\n\n    <div>\n        <Text is=\"strong\">H4</Text>\n        <Heading is=\"h4\" variation=\"block\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien.\n        </Heading>\n    </div>\n\n    <div>\n        <Text is=\"strong\">H5</Text>\n        <Heading is=\"h5\" variation=\"block\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien.\n        </Heading>\n    </div>\n\n    <div>\n        <Text is=\"strong\">H6</Text>\n        <Heading is=\"h6\" variation=\"block\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien.\n        </Heading>\n    </div>\n</Stack.Container>\n\n<style>\n    :global(.heading-sizing-block > div) {\n        max-width: 25ch;\n    }\n</style>"},{"identifier":"/playground?snippet=heading-sizing-inline","title":"Heading Sizing Inline","text":"<script>\n    import {\n        Heading,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    class=\"heading-sizing-inline\"\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">H1</Text>\n        <Heading is=\"h1\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien.\n        </Heading>\n    </div>\n\n    <div>\n        <Text is=\"strong\">H2</Text>\n        <Heading is=\"h2\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien.\n        </Heading>\n    </div>\n\n    <div>\n        <Text is=\"strong\">H3</Text>\n        <Heading is=\"h3\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien.\n        </Heading>\n    </div>\n\n    <div>\n        <Text is=\"strong\">H4</Text>\n        <Heading is=\"h4\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien.\n        </Heading>\n    </div>\n\n    <div>\n        <Text is=\"strong\">H5</Text>\n        <Heading is=\"h5\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien.\n        </Heading>\n    </div>\n\n    <div>\n        <Text is=\"strong\">H6</Text>\n        <Heading is=\"h6\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien.\n        </Heading>\n    </div>\n</Stack.Container>\n\n<style>\n    :global(.heading-sizing-inline > div) {\n        max-width: 25ch;\n    }\n</style>"},{"identifier":"/playground?snippet=heading-transform","title":"Heading Transform","text":"<script>\n    import {\n        Heading,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    class=\"heading-transform\"\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n        <Heading>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit.\n        </Heading>\n    </div>\n\n    <div>\n        <Text is=\"strong\">CAPITALIZE</Text>\n        <Heading transform=\"capitalize\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit.\n        </Heading>\n    </div>\n\n    <div>\n        <Text is=\"strong\">LOWERCASE</Text>\n        <Heading transform=\"lowercase\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit.\n        </Heading>\n    </div>\n\n    <div>\n        <Text is=\"strong\">UPPERCASE</Text>\n        <Heading transform=\"uppercase\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit.\n        </Heading>\n    </div>\n</Stack.Container>\n\n<style>\n    :global(.heading-transform > div) {\n        max-width: 25ch;\n    }\n</style>"},{"identifier":"/playground?snippet=heading-variation","title":"Heading Variation","text":"<script>\n    import {\n        Heading,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    class=\"heading-variation\"\n    spacing=\"medium\"\n>\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n        <Heading>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien.\n        </Heading>\n    </div>\n\n    <div>\n        <Text is=\"strong\">TRUNCATE</Text>\n        <Heading variation=\"truncate\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien.\n        </Heading>\n    </div>\n</Stack.Container>\n\n<style>\n    :global(.heading-variation > div) {\n        max-width: 50ch;\n    }\n</style>"},{"identifier":"/playground?snippet=hero-palette","title":"Hero Palette","text":"<script>\n    import {\n        Button,\n        Hero,\n        Stack,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container spacing=\"medium\">\n    <Hero.Container>\n        <Hero.Header>404</Hero.Header>\n        <Hero.Section>\n            The page you tried to access is missing or\n            no longer available.\n        </Hero.Section>\n\n        <Hero.Footer>DEFAULT</Hero.Footer>\n    </Hero.Container>\n\n    <Hero.Container palette=\"accent\">\n        <Hero.Header>404</Hero.Header>\n        <Hero.Section>\n            The page you tried to access is missing or\n            no longer available.\n        </Hero.Section>\n\n        <Hero.Footer>ACCENT</Hero.Footer>\n    </Hero.Container>\n\n    <Hero.Container palette=\"neutral\">\n        <Hero.Header>404</Hero.Header>\n        <Hero.Section>\n            The page you tried to access is missing or\n            no longer available.\n        </Hero.Section>\n\n        <Hero.Footer>NEUTRAL</Hero.Footer>\n    </Hero.Container>\n\n    <Hero.Container palette=\"dark\">\n        <Hero.Header>404</Hero.Header>\n        <Hero.Section>\n            The page you tried to access is missing or\n            no longer available.\n        </Hero.Section>\n\n        <Hero.Footer>DARK</Hero.Footer>\n    </Hero.Container>\n\n    <Hero.Container palette=\"light\">\n        <Hero.Header>404</Hero.Header>\n        <Hero.Section>\n            The page you tried to access is missing or\n            no longer available.\n        </Hero.Section>\n\n        <Hero.Footer>LIGHT</Hero.Footer>\n    </Hero.Container>\n\n    <Hero.Container palette=\"affirmative\">\n        <Hero.Header>404</Hero.Header>\n        <Hero.Section>\n            The page you tried to access is missing or\n            no longer available.\n        </Hero.Section>\n\n        <Hero.Footer>AFFIRMATIVE</Hero.Footer>\n    </Hero.Container>\n\n    <Hero.Container palette=\"informative\">\n        <Hero.Header>404</Hero.Header>\n        <Hero.Section>\n            The page you tried to access is missing or\n            no longer available.\n        </Hero.Section>\n\n        <Hero.Footer>INFORMATIVE</Hero.Footer>\n    </Hero.Container>\n\n    <Hero.Container palette=\"negative\">\n        <Hero.Header>404</Hero.Header>\n        <Hero.Section>\n            The page you tried to access is missing or\n            no longer available.\n        </Hero.Section>\n\n        <Hero.Footer>NEGATIVE</Hero.Footer>\n    </Hero.Container>\n</Stack.Container>"},{"identifier":"/playground?snippet=hero-preview","title":"Hero Preview","text":"<script>\n    import {Button, Hero} from \"@kahi-ui/framework\";\n</script>\n\n<Hero.Container palette=\"negative\" height=\"100\">\n    <Hero.Header>404</Hero.Header>\n    <Hero.Section>\n        The page you tried to access is missing or no\n        longer available.\n    </Hero.Section>\n\n    <Hero.Footer>\n        <Button palette=\"light\" variation=\"clear\">\n            Go Back\n        </Button>\n        <Button palette=\"accent\">Submit Ticket</Button>\n    </Hero.Footer>\n</Hero.Container>"},{"identifier":"/playground?snippet=hidden-preview","title":"Hidden Preview","text":"<script>\n    import {Box} from \"@kahi-ui/framework\";\n</script>\n\n<Box palette=\"accent\" hidden={[\"mobile\", \"tablet\"]}>\n    I am visible on Desktop / Widescreen Viewports.\n</Box>\n\n<Box\n    palette=\"affirmative\"\n    hidden={[\"desktop\", \"widescreen\"]}\n>\n    I am visible on Mobile / Tablet Viewports.\n</Box>"},{"identifier":"/playground?snippet=html5-class","title":"HTML5 class","text":"<script>\n    import {Text} from \"@kahi-ui/framework\";\n</script>\n\n<Text class=\"my-text\">\n    Lorem ipsum dolor sit amet, consectetur adipiscing\n    elit.\n</Text>\n\n<style>\n    :global(.my-text) {\n        color: red;\n    }\n</style>"},{"identifier":"/playground?snippet=html5-id","title":"HTML5 id","text":"<script>\n    import {\n        Anchor,\n        Heading,\n        Spacer,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Anchor href=\"#target-heading\">\n    Scroll to Heading!\n</Anchor>\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n\n<Heading id=\"target-heading\">Hello World!</Heading>"},{"identifier":"/playground?snippet=html5-name","title":"HTML5 name","text":"<script>\n    import {Anchor} from \"@kahi-ui/framework\";\n</script>\n\n<Anchor target=\"target-iframe\" href=\"/\">\n    Open Landing Page\n</Anchor>\n\n<iframe\n    name=\"target-iframe\"\n    width=\"100%\"\n    height=\"256\"\n/>"},{"identifier":"/playground?snippet=html5-style","title":"HTML5 style","text":"<script>\n    import {Text} from \"@kahi-ui/framework\";\n</script>\n\n<Text style=\"color:red;\">\n    Lorem ipsum dolor sit amet, consectetur adipiscing\n    elit.\n</Text>"},{"identifier":"/playground?snippet=html5-tabindex","title":"HTML5 tabindex","text":"<script>\n    import {Button} from \"@kahi-ui/framework\";\n</script>\n\n<Button tabindex=\"3\">Index #3</Button>\n<Button tabindex=\"1\">Index #1</Button>\n<Button tabindex=\"-1\">Unselectable</Button>\n<Button tabindex=\"4\">Index #4</Button>\n<Button tabindex=\"2\">Index #2</Button>"},{"identifier":"/playground?snippet=html5-title","title":"HTML5 title","text":"<script>\n    import {Text} from \"@kahi-ui/framework\";\n</script>\n\n<Text title=\"I am some additional text!\">\n    Hover me!\n</Text>"},{"identifier":"/playground?snippet=htmlmode-built-in-shortcuts","title":"htmlmode Built-In Shortcuts","text":"<script>\n    import {\n        Code,\n        Heading,\n        Text,\n        htmldark,\n        htmllight,\n    } from \"@kahi-ui/framework\";\n\n    const dark_store = htmldark();\n    const light_store = htmllight();\n</script>\n\n<Heading>Application Theme Mode</Heading>\n\n<Text>\n    <Code>&lt;html data-mode=\"dark\"&gt;</Code>: <Code>\n        {$dark_store}\n    </Code>\n</Text>\n\n<Text>\n    <Code>&lt;html data-mode=\"light\"&gt;</Code>: <Code>\n        {$light_store}\n    </Code>\n</Text>"},{"identifier":"/playground?snippet=htmlmode-preview","title":"htmlmode Preview","text":"<script>\n    import {\n        Code,\n        Heading,\n        Text,\n        htmlmode,\n    } from \"@kahi-ui/framework\";\n\n    const mode_store = htmlmode();\n</script>\n\n<Heading>Application Theme Mode</Heading>\n\n<Text>\n    <Code>&lt;html data-mode&gt;</Code>: <Code>\n        \"{$mode_store}\"\n    </Code>\n</Text>"},{"identifier":"/playground?snippet=intersection_observer-preview","title":"intersection_observer Preview","text":"<script>\n    import {\n        Box,\n        Code,\n        Spacer,\n        Transition,\n        intersection_observer,\n    } from \"@kahi-ui/framework\";\n\n    let is_intersecting = false;\n</script>\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n\n<Box\n    palette={is_intersecting\n        ? \"affirmative\"\n        : \"negative\"}\n    padding=\"small\"\n>\n    Scroll down to watch this <Code>Box</Code> change when\n    the <Code>Box</Code> comes into view.\n</Box>\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n\n<div\n    class=\"intersection-observer-preview\"\n    use:intersection_observer={{\n        threshold: 0.5,\n        on_intersect: (intersections) => {\n            console.log(\"on_intersect\", {\n                intersections,\n            });\n\n            is_intersecting = intersections.some(\n                (intersection) =>\n                    intersection.isIntersecting\n            );\n        },\n    }}\n>\n    {#if is_intersecting}\n        <Transition\n            animation=\"scale\"\n            variation=\"enter\"\n        >\n            <Box\n                class=\"intersection-observer-preview\"\n                palette=\"inverse\"\n                padding=\"small\">I am in view!</Box\n            >\n        </Transition>\n    {/if}\n</div>\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n\n<Box\n    palette={is_intersecting\n        ? \"affirmative\"\n        : \"negative\"}\n    padding=\"small\"\n>\n    Scroll up to watch this <Code>Box</Code> change when\n    the <Code>Box</Code> comes into view.\n</Box>\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n\n<style>\n    :global(.intersection-observer-preview) {\n        height: 40px;\n    }\n</style>"},{"identifier":"/playground?snippet=intersectionrender-eager","title":"IntersectionRender Eager","text":"<script>\n    import {\n        Box,\n        Code,\n        IntersectionRender,\n        Spacer,\n        Transition,\n    } from \"@kahi-ui/framework\";\n\n    let is_intersecting = false;\n</script>\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n\n<Box\n    palette={is_intersecting\n        ? \"affirmative\"\n        : \"negative\"}\n    padding=\"small\"\n>\n    Scroll down to watch this <Code>Box</Code> change when\n    the <Code>Box</Code> comes into view.\n</Box>\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n\n<IntersectionRender\n    class=\"intersectionrender-eager\"\n    loading=\"eager\"\n    threshold={0.5}\n    bind:is_intersecting\n>\n    <Transition animation=\"scale\" variation=\"enter\">\n        <Box\n            class=\"intersectionrender-eager\"\n            palette=\"inverse\"\n            padding=\"small\"\n        >\n            I am in view!\n        </Box>\n    </Transition>\n</IntersectionRender>\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n\n<Box\n    palette={is_intersecting\n        ? \"affirmative\"\n        : \"negative\"}\n    padding=\"small\"\n>\n    Scroll up to watch this <Code>Box</Code> change when\n    the <Code>Box</Code> comes into view.\n</Box>\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n\n<style>\n    :global(.intersectionrender-eager) {\n        height: 40px;\n    }\n</style>"},{"identifier":"/playground?snippet=intersectionrender-fallthrough","title":"IntersectionRender Fallthrough","text":"<script>\n    import {\n        Box,\n        Code,\n        IntersectionRender,\n        Spacer,\n        Transition,\n    } from \"@kahi-ui/framework\";\n\n    let is_intersecting = false;\n</script>\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n\n<Box\n    palette={is_intersecting\n        ? \"affirmative\"\n        : \"negative\"}\n    padding=\"small\"\n>\n    Scroll down to watch this <Code>Box</Code> change when\n    the <Code>Box</Code> comes into view.\n</Box>\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n\n<IntersectionRender\n    threshold={0.5}\n    fallthrough\n    bind:is_intersecting\n>\n    <Transition animation=\"scale\" variation=\"enter\">\n        <Box palette=\"inverse\" padding=\"small\">\n            I am in view!\n        </Box>\n    </Transition>\n</IntersectionRender>\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n\n<Box\n    palette={is_intersecting\n        ? \"affirmative\"\n        : \"negative\"}\n    padding=\"small\"\n>\n    Scroll up to watch this <Code>Box</Code> change when\n    the <Code>Box</Code> comes into view.\n</Box>\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />"},{"identifier":"/playground?snippet=intersectionrender-preview","title":"IntersectionRender Preview","text":"<script>\n    import {\n        Box,\n        Code,\n        IntersectionRender,\n        Spacer,\n        Transition,\n    } from \"@kahi-ui/framework\";\n\n    let is_intersecting = false;\n</script>\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n\n<Box\n    palette={is_intersecting\n        ? \"affirmative\"\n        : \"negative\"}\n    padding=\"small\"\n>\n    Scroll down to watch this <Code>Box</Code> change when\n    the <Code>Box</Code> comes into view.\n</Box>\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n\n<IntersectionRender\n    threshold={0.5}\n    bind:is_intersecting\n>\n    <Transition animation=\"scale\" variation=\"enter\">\n        <Box palette=\"inverse\" padding=\"small\">\n            I am in view!\n        </Box>\n    </Transition>\n</IntersectionRender>\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n\n<Box\n    palette={is_intersecting\n        ? \"affirmative\"\n        : \"negative\"}\n    padding=\"small\"\n>\n    Scroll up to watch this <Code>Box</Code> change when\n    the <Code>Box</Code> comes into view.\n</Box>\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />\n\n<Spacer spacing=\"huge\" />\n<Spacer spacing=\"huge\" />"},{"identifier":"/playground?snippet=kbd-preview","title":"Kbd Preview","text":"<script>\n    import {Kbd} from \"@kahi-ui/framework\";\n</script>\n\n<Kbd>CTRL+C</Kbd>"},{"identifier":"/playground?snippet=keybind-binding","title":"keybind Binding","text":"<script>\n    import {Box, keybind} from \"@kahi-ui/framework\";\n\n    let active = false;\n</script>\n\n<svelte:window\n    use:keybind={{\n        binds: \"shift+m\",\n        on_bind: (event) =>\n            (active = event.detail.active),\n    }}\n/>\n\n<Box\n    palette={active ? \"affirmative\" : \"negative\"}\n    padding=\"small\"\n>\n    Press SHIFT+M to activate bind.\n</Box>"},{"identifier":"/playground?snippet=keybind-built-in-shortcuts","title":"Keybind Built-In Shortcuts","text":"<script>\n    import {\n        TextInput,\n        action_submit,\n    } from \"@kahi-ui/framework\";\n\n    let active = false;\n    let value = \"\";\n</script>\n\n<TextInput\n    palette={active ? \"affirmative\" : \"negative\"}\n    placeholder=\"Enter a value and then press enter.\"\n    actions={[\n        [\n            action_submit,\n            {\n                on_bind: (event) => {\n                    active = event.detail.active;\n\n                    if (active) {\n                        alert(\n                            `You submitted \"${value}\" as your input!`\n                        );\n                    }\n                },\n            },\n        ],\n    ]}\n    bind:value\n/>"},{"identifier":"/playground?snippet=keybind-event-management","title":"keybind Event Management","text":"<script>\n    import {\n        Box,\n        Code,\n        keybind,\n    } from \"@kahi-ui/framework\";\n\n    let active = false;\n</script>\n\n<svelte:window\n    use:keybind={{\n        binds: \"f5\",\n        on_bind: (event) => {\n            event.preventDefault();\n            active = event.detail.active;\n        },\n    }}\n/>\n\n<Box\n    palette={active ? \"affirmative\" : \"negative\"}\n    padding=\"small\"\n>\n    Press F5 to activate bind.\n</Box>"},{"identifier":"/playground?snippet=keybind-multiple-bindings","title":"keybind Multiple Bindings","text":"<script>\n    import {\n        Box,\n        Text,\n        keybind,\n    } from \"@kahi-ui/framework\";\n\n    let active = false;\n</script>\n\n<svelte:window\n    use:keybind={{\n        binds: [\"control+enter\", \"shift+m\"],\n        on_bind: (event) =>\n            (active = event.detail.active),\n    }}\n/>\n\n<Box\n    palette={active ? \"affirmative\" : \"negative\"}\n    padding=\"small\"\n>\n    Press CTRL+ENTER <Text is=\"strong\">OR</Text> SHIFT+M\n    to activate bind.\n</Box>"},{"identifier":"/playground?snippet=keybind-preview","title":"keybind Preview","text":"<script>\n    import {\n        Box,\n        TextInput,\n        keybind,\n    } from \"@kahi-ui/framework\";\n\n    let input_active = false;\n    let window_active = false;\n</script>\n\n<svelte:window\n    use:keybind={{\n        binds: \"shift+m\",\n        on_bind: (event) =>\n            (window_active = event.detail.active),\n    }}\n/>\n\n<Box\n    palette={window_active\n        ? \"affirmative\"\n        : \"negative\"}\n    padding=\"small\"\n>\n    Press SHIFT+M to activate bind.\n</Box>\n\n<br />\n\n<TextInput\n    placeholder=\"Click inside of me for focus, and press CTRL+ENTER to activate bind.\"\n    palette={input_active ? \"affirmative\" : \"negative\"}\n    actions={[\n        [\n            keybind,\n            {\n                binds: \"control+enter\",\n                on_bind: (event) =>\n                    (input_active =\n                        event.detail.active),\n            },\n        ],\n    ]}\n/>"},{"identifier":"/playground?snippet=keybind-repeat","title":"keybind Repeat","text":"<script>\n    import {\n        Box,\n        Code,\n        keybind,\n    } from \"@kahi-ui/framework\";\n\n    let active = false;\n    let value = \"\";\n</script>\n\n<svelte:window\n    use:keybind={{\n        binds: \"shift+m\",\n        repeat: true,\n        on_bind: (event) => {\n            active = event.detail.active;\n            if (event.detail.repeat) {\n                value += \"I am on repeat!\\n\";\n            }\n        },\n    }}\n/>\n\n<Box\n    palette={active ? \"affirmative\" : \"negative\"}\n    padding=\"small\"\n>\n    Press and hold SHIFT+M to activate bind.\n</Box>\n\n<Code is=\"pre\">\n    {value}\n</Code>"},{"identifier":"/playground?snippet=keybind-throttle-cancel","title":"keybind Throttle Cancel","text":"<script>\n    import {\n        Box,\n        Code,\n        TextInput,\n        Scrollable,\n        Stack,\n        keybind,\n    } from \"@kahi-ui/framework\";\n    import {tick} from \"svelte\";\n\n    let scrollable_element;\n\n    let active = false;\n    let current = 0;\n\n    async function update_scrollable() {\n        // NOTE: Have to wait for the DOM to update after our render runs again\n        await tick();\n\n        const current_element =\n            scrollable_element.querySelector(\n                `[data-palette=\"accent\"]`\n            );\n\n        if (current_element) {\n            current_element.scrollIntoView({\n                block: \"nearest\",\n                behavior: \"smooth\",\n            });\n        }\n    }\n</script>\n\n<TextInput\n    palette={active ? \"affirmative\" : \"negative\"}\n    placeholder=\"Focus me and press and hold ARROWDOWN / ARROWUP\"\n    actions={[\n        [\n            keybind,\n            {\n                binds: \"arrowdown\",\n                repeat: true,\n                repeat_throttle: 100,\n                throttle_cancel: true,\n                on_bind: (event) => {\n                    if (!event.detail.active) return;\n                    event.preventDefault();\n\n                    current = Math.min(current + 1, 9);\n                    update_scrollable();\n                },\n            },\n        ],\n        [\n            keybind,\n            {\n                binds: \"arrowup\",\n                repeat: true,\n                repeat_throttle: 100,\n                throttle_cancel: true,\n                on_bind: (event) => {\n                    if (!event.detail.active) return;\n                    event.preventDefault();\n\n                    current = Math.max(current - 1, 0);\n                    update_scrollable();\n                },\n            },\n        ],\n    ]}\n    on:focusin={() => (active = true)}\n    on:focusout={() => (active = false)}\n/>\n\n<Box>\n    <Scrollable\n        bind:element={scrollable_element}\n        style=\"height:5rem;\"\n    >\n        {#each new Array(10).fill(null) as _, index}\n            <Box\n                palette={current === index\n                    ? \"accent\"\n                    : \"auto\"}\n            >\n                Search Result #{index + 1}\n            </Box>\n        {/each}\n    </Scrollable>\n</Box>"},{"identifier":"/playground?snippet=keybind-throttling","title":"keybind Throttling","text":"<script>\n    import {\n        Box,\n        Code,\n        keybind,\n    } from \"@kahi-ui/framework\";\n\n    let active = false;\n    let value = \"\";\n</script>\n\n<svelte:window\n    use:keybind={{\n        binds: \"shift+m\",\n        repeat: true,\n        repeat_throttle: 100,\n        on_bind: (event) => {\n            active = event.detail.active;\n            if (event.detail.repeat) {\n                value += \"I am on repeat!\\n\";\n            }\n        },\n    }}\n/>\n\n<Box\n    palette={active ? \"affirmative\" : \"negative\"}\n    padding=\"small\"\n>\n    Press and hold SHIFT+M to activate bind.\n</Box>\n\n<Code is=\"pre\">\n    {value}\n</Code>"},{"identifier":"/playground?snippet=list-elements","title":"List Elements","text":"<script>\n    import {\n        List,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text>\n            <Text is=\"strong\">ORDERED</Text>\n            <List.Container is=\"ol\">\n                <List.Item>\n                    Lorem ipsum dolor sit amet.\n                </List.Item>\n\n                <List.Item>\n                    Consectetur adipiscing elit.\n                </List.Item>\n\n                <List.Item>\n                    Proin et consectetur orci.\n                </List.Item>\n            </List.Container>\n        </Text>\n    </div>\n\n    <div>\n        <Text>\n            <Text is=\"strong\">UNORDERED</Text>\n            <List.Container>\n                <List.Item>\n                    Lorem ipsum dolor sit amet.\n                </List.Item>\n\n                <List.Item>\n                    Consectetur adipiscing elit.\n                </List.Item>\n\n                <List.Item>\n                    Proin et consectetur orci.\n                </List.Item>\n            </List.Container>\n        </Text>\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=list-preview","title":"List Preview","text":"<script>\n    import {List} from \"@kahi-ui/framework\";\n</script>\n\n<List.Container>\n    <List.Item>Lorem ipsum dolor sit amet.</List.Item>\n    <List.Item>Consectetur adipiscing elit.</List.Item>\n    <List.Item>Proin et consectetur orci.</List.Item>\n</List.Container>"},{"identifier":"/playground?snippet=lost_focus-preview","title":"lost_focus Preview","text":"<script>\n    import {\n        Button,\n        TextInput,\n        lost_focus,\n    } from \"@kahi-ui/framework\";\n\n    let has_focus = false;\n</script>\n\n<TextInput\n    palette={has_focus ? \"affirmative\" : \"negative\"}\n    actions={[\n        [\n            lost_focus,\n            {\n                enabled: has_focus,\n                on_lost_focus: () =>\n                    (has_focus = false),\n            },\n        ],\n    ]}\n    on:focusin={() => (has_focus = true)}\n/>\n\n<Button>Focus me!</Button>"},{"identifier":"/playground?snippet=mediaquery-prevew","title":"mediaquery Prevew","text":"<script>\n    import {\n        Code,\n        Heading,\n        Text,\n        mediaquery,\n        mediaqueries,\n    } from \"@kahi-ui/framework\";\n\n    const standard_hd_store = mediaquery(\n        \"(min-width: 1280px) and (min-height: 720px)\"\n    );\n\n    const ratio_store = mediaquery(\n        \"(aspect-ratio: 16/9)\"\n    );\n\n    // By default `mediaqueries` has `or` behavior, which means if any query is valid, then\n    // `true` is returned by the Store\n    //\n    // However in this case, we want `and` behavior, meaning all queries have to be valid\n    // for `true` to be returned\n    const combo_store = mediaqueries(\n        [\n            \"(min-width: 1280px) and (min-height: 720px)\",\n            \"(aspect-ratio: 16/9)\",\n        ],\n        {behavior: \"and\"}\n    );\n</script>\n\n<Heading>Queries Enabled</Heading>\n\n<Text>sHD: <Code>{$standard_hd_store}</Code></Text>\n<Text>16:9: <Code>{$ratio_store}</Code></Text>\n\n<Text>sHD + 16:9: <Code>{$combo_store}</Code></Text>"},{"identifier":"/playground?snippet=mediaqueryrender-behavior","title":"MediaQueryRender Behavior","text":"<script>\n    import {\n        Box,\n        MediaQueryRender,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<MediaQueryRender\n    queries={[\n        \"(orientation: portrait)\",\n        \"(pointer: coarse)\",\n    ]}\n    behavior=\"and\"\n>\n    <Box palette=\"affirmative\" padding=\"small\">\n        This is only rendered when the Viewport is in a\n        portrait orientation <Text is=\"strong\">\n            AND\n        </Text> the main interaction device is touch.\n    </Box>\n</MediaQueryRender>\n\n<MediaQueryRender\n    queries={[\n        \"(orientation: landscape)\",\n        \"(pointer: fine)\",\n    ]}\n    behavior=\"and\"\n>\n    <Box palette=\"affirmative\" padding=\"small\">\n        This is only rendered when the Viewport is in a\n        landscape orientation <Text is=\"strong\">\n            AND\n        </Text> the main interaction device is mouse / stylus.\n    </Box>\n</MediaQueryRender>"},{"identifier":"/playground?snippet=mediaqueryrender-fallthrough","title":"MediaQueryRender Fallthrough","text":"<script>\n    import {\n        Box,\n        MediaQueryRender,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<MediaQueryRender\n    queries=\"(prefers-color-scheme: dark)\"\n    fallthrough\n>\n    <Box palette=\"light\" padding=\"small\">\n        This is only rendered when the user's color\n        preference is dark.\n    </Box>\n</MediaQueryRender>\n\n<MediaQueryRender\n    queries=\"(prefers-color-scheme: light)\"\n    fallthrough\n>\n    <Box palette=\"dark\" padding=\"small\">\n        This is only rendered when the user's color\n        preference is light.\n    </Box>\n</MediaQueryRender>"},{"identifier":"/playground?snippet=mediaqueryrender-multiple-queries","title":"MediaQueryRender Multiple Queries","text":"<script>\n    import {\n        Box,\n        MediaQueryRender,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<MediaQueryRender\n    queries={[\n        \"(min-width: 1280px) and (min-height: 720px)\",\n        \"(aspect-ratio: 16/9)\",\n    ]}\n>\n    <Box palette=\"affirmative\" padding=\"small\">\n        This is only rendered when the Viewport is at\n        least sHD resolution <Text is=\"strong\">\n            OR\n        </Text> is 16:9.\n    </Box>\n</MediaQueryRender>"},{"identifier":"/playground?snippet=mediaqueryrender-preview","title":"MediaQueryRender Preview","text":"<script>\n    import {\n        Box,\n        MediaQueryRender,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<MediaQueryRender\n    queries=\"(min-width: 1280px) and (min-height: 720px)\"\n>\n    <Box palette=\"affirmative\" padding=\"small\">\n        This is only rendered when the Viewport is at\n        least sHD resolution\n    </Box>\n</MediaQueryRender>"},{"identifier":"/playground?snippet=menu-orientation","title":"Menu Orientation","text":"<script>\n    import {Menu} from \"@kahi-ui/framework\";\n</script>\n\n<Menu.Container orientation=\"horizontal\">\n    <Menu.Button>Documentation</Menu.Button>\n    <Menu.Button>Github</Menu.Button>\n    <Menu.Button>Releases</Menu.Button>\n</Menu.Container>"},{"identifier":"/playground?snippet=menu-palette","title":"Menu Palette","text":"<script>\n    import {\n        Menu,\n        Mosaic,\n        Spacer,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Mosaic.Container sizing=\"medium\" spacing=\"medium\">\n    <Menu.Container>\n        <Menu.Heading>DEFAULT</Menu.Heading>\n\n        <Menu.Section>\n            <Menu.Button active>\n                Dot\n                <Spacer />\n                <span>ICON</span>\n            </Menu.Button>\n\n            <Menu.Button>\n                Spinner\n                <Spacer />\n                <span>ICON</span>\n            </Menu.Button>\n        </Menu.Section>\n    </Menu.Container>\n\n    <Menu.Container>\n        <Menu.Heading>ACCENT</Menu.Heading>\n\n        <Menu.Section>\n            <Menu.Button palette=\"accent\" active>\n                Dot\n                <Spacer />\n                <span>ICON</span>\n            </Menu.Button>\n\n            <Menu.Button palette=\"accent\">\n                Spinner\n                <Spacer />\n                <span>ICON</span>\n            </Menu.Button>\n        </Menu.Section>\n    </Menu.Container>\n\n    <Menu.Container>\n        <Menu.Heading>NEUTRAL</Menu.Heading>\n\n        <Menu.Section>\n            <Menu.Button palette=\"neutral\" active>\n                Dot\n                <Spacer />\n                <span>ICON</span>\n            </Menu.Button>\n\n            <Menu.Button palette=\"neutral\">\n                Spinner\n                <Spacer />\n                <span>ICON</span>\n            </Menu.Button>\n        </Menu.Section>\n    </Menu.Container>\n\n    <Menu.Container>\n        <Menu.Heading>DARK</Menu.Heading>\n\n        <Menu.Section>\n            <Menu.Button palette=\"dark\" active>\n                Dot\n                <Spacer />\n                <span>ICON</span>\n            </Menu.Button>\n\n            <Menu.Button palette=\"dark\">\n                Spinner\n                <Spacer />\n                <span>ICON</span>\n            </Menu.Button>\n        </Menu.Section>\n    </Menu.Container>\n\n    <Menu.Container>\n        <Menu.Heading>LIGHT</Menu.Heading>\n\n        <Menu.Section>\n            <Menu.Button palette=\"light\" active>\n                Dot\n                <Spacer />\n                <span>ICON</span>\n            </Menu.Button>\n\n            <Menu.Button palette=\"light\">\n                Spinner\n                <Spacer />\n                <span>ICON</span>\n            </Menu.Button>\n        </Menu.Section>\n    </Menu.Container>\n\n    <Menu.Container>\n        <Menu.Heading>ALERT</Menu.Heading>\n\n        <Menu.Section>\n            <Menu.Button palette=\"alert\" active>\n                Dot\n                <Spacer />\n                <span>ICON</span>\n            </Menu.Button>\n\n            <Menu.Button palette=\"alert\">\n                Spinner\n                <Spacer />\n                <span>ICON</span>\n            </Menu.Button>\n        </Menu.Section>\n    </Menu.Container>\n\n    <Menu.Container>\n        <Menu.Heading>AFFIRMATIVE</Menu.Heading>\n\n        <Menu.Section>\n            <Menu.Button palette=\"affirmative\" active>\n                Dot\n                <Spacer />\n                <span>ICON</span>\n            </Menu.Button>\n\n            <Menu.Button palette=\"affirmative\">\n                Spinner\n                <Spacer />\n                <span>ICON</span>\n            </Menu.Button>\n        </Menu.Section>\n    </Menu.Container>\n\n    <Menu.Container>\n        <Menu.Heading>INFORMATIVE</Menu.Heading>\n\n        <Menu.Section>\n            <Menu.Button palette=\"informative\" active>\n                Dot\n                <Spacer />\n                <span>ICON</span>\n            </Menu.Button>\n\n            <Menu.Button palette=\"informative\">\n                Spinner\n                <Spacer />\n                <span>ICON</span>\n            </Menu.Button>\n        </Menu.Section>\n    </Menu.Container>\n\n    <Menu.Container>\n        <Menu.Heading>NEGATIVE</Menu.Heading>\n\n        <Menu.Section>\n            <Menu.Button palette=\"negative\" active>\n                Dot\n                <Spacer />\n                <span>ICON</span>\n            </Menu.Button>\n\n            <Menu.Button palette=\"negative\">\n                Spinner\n                <Spacer />\n                <span>ICON</span>\n            </Menu.Button>\n        </Menu.Section>\n    </Menu.Container>\n</Mosaic.Container>"},{"identifier":"/playground?snippet=menu-preview","title":"Menu Preview","text":"<script>\n    import {\n        Menu,\n        Spacer,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Menu.Container>\n    <Menu.Button>\n        Copy\n        <Spacer />\n        <Text is=\"small\">CTRL+C</Text>\n    </Menu.Button>\n\n    <Menu.Button>\n        Cut\n        <Spacer />\n        <Text is=\"small\">CTRL+X</Text>\n    </Menu.Button>\n\n    <Menu.Heading />\n\n    <Menu.Button>\n        Delete\n        <Spacer />\n        <Text is=\"small\">DEL</Text>\n    </Menu.Button>\n</Menu.Container>"},{"identifier":"/playground?snippet=menu-section","title":"Menu Section","text":"<script>\n    import {\n        Box,\n        Menu,\n        Spacer,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Box palette=\"negative\" padding=\"medium\">\n    <Menu.Container>\n        <Menu.Heading>FEEDBACK</Menu.Heading>\n\n        <Menu.Section>\n            <Menu.Button active>\n                Dot\n                <Spacer />\n                <Text is=\"span\">ICON</Text>\n            </Menu.Button>\n\n            <Menu.Button>\n                Spinner\n                <Spacer />\n                <Text is=\"span\">ICON</Text>\n            </Menu.Button>\n        </Menu.Section>\n\n        <Menu.Heading>OVERLAYS</Menu.Heading>\n\n        <Menu.Section>\n            <Menu.Button>\n                Overlay\n                <Spacer />\n                <Text is=\"span\">ICON</Text>\n            </Menu.Button>\n        </Menu.Section>\n    </Menu.Container>\n</Box>"},{"identifier":"/playground?snippet=menu-sizing","title":"Menu Sizing","text":"<script>\n    import {\n        Menu,\n        Mosaic,\n        Spacer,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Mosaic.Container sizing=\"medium\" spacing=\"medium\">\n    <Menu.Container>\n        <Menu.Heading>DEFAULT</Menu.Heading>\n\n        <Menu.Section>\n            <Menu.Button active>\n                Dot\n                <Spacer />\n                <span>ICON</span>\n            </Menu.Button>\n\n            <Menu.Button>\n                Spinner\n                <Spacer />\n                <span>ICON</span>\n            </Menu.Button>\n        </Menu.Section>\n    </Menu.Container>\n\n    <Menu.Container sizing=\"nano\">\n        <Menu.Heading>NANO</Menu.Heading>\n\n        <Menu.Section>\n            <Menu.Button active>\n                Dot\n                <Spacer />\n                <span>ICON</span>\n            </Menu.Button>\n\n            <Menu.Button>\n                Spinner\n                <Spacer />\n                <span>ICON</span>\n            </Menu.Button>\n        </Menu.Section>\n    </Menu.Container>\n\n    <Menu.Container sizing=\"tiny\">\n        <Menu.Heading>TINY</Menu.Heading>\n\n        <Menu.Section>\n            <Menu.Button active>\n                Dot\n                <Spacer />\n                <span>ICON</span>\n            </Menu.Button>\n\n            <Menu.Button>\n                Spinner\n                <Spacer />\n                <span>ICON</span>\n            </Menu.Button>\n        </Menu.Section>\n    </Menu.Container>\n\n    <Menu.Container sizing=\"small\">\n        <Menu.Heading>SMALL</Menu.Heading>\n\n        <Menu.Section>\n            <Menu.Button active>\n                Dot\n                <Spacer />\n                <span>ICON</span>\n            </Menu.Button>\n\n            <Menu.Button>\n                Spinner\n                <Spacer />\n                <span>ICON</span>\n            </Menu.Button>\n        </Menu.Section>\n    </Menu.Container>\n\n    <Menu.Container sizing=\"medium\">\n        <Menu.Heading>MEDIUM</Menu.Heading>\n\n        <Menu.Section>\n            <Menu.Button active>\n                Dot\n                <Spacer />\n                <span>ICON</span>\n            </Menu.Button>\n\n            <Menu.Button>\n                Spinner\n                <Spacer />\n                <span>ICON</span>\n            </Menu.Button>\n        </Menu.Section>\n    </Menu.Container>\n\n    <Menu.Container sizing=\"large\">\n        <Menu.Heading>LARGE</Menu.Heading>\n\n        <Menu.Section>\n            <Menu.Button active>\n                Dot\n                <Spacer />\n                <span>ICON</span>\n            </Menu.Button>\n\n            <Menu.Button>\n                Spinner\n                <Spacer />\n                <span>ICON</span>\n            </Menu.Button>\n        </Menu.Section>\n    </Menu.Container>\n\n    <Menu.Container sizing=\"huge\">\n        <Menu.Heading>HUGE</Menu.Heading>\n\n        <Menu.Section>\n            <Menu.Button active>\n                Dot\n                <Spacer />\n                <span>ICON</span>\n            </Menu.Button>\n\n            <Menu.Button>\n                Spinner\n                <Spacer />\n                <span>ICON</span>\n            </Menu.Button>\n        </Menu.Section>\n    </Menu.Container>\n\n    <Menu.Container sizing=\"massive\">\n        <Menu.Heading>MASSIVE</Menu.Heading>\n\n        <Menu.Section>\n            <Menu.Button active>\n                Dot\n                <Spacer />\n                <span>ICON</span>\n            </Menu.Button>\n\n            <Menu.Button>\n                Spinner\n                <Spacer />\n                <span>ICON</span>\n            </Menu.Button>\n        </Menu.Section>\n    </Menu.Container>\n</Mosaic.Container>"},{"identifier":"/playground?snippet=menu-text-divider","title":"Menu Text Divider","text":"<script>\n    import {\n        Box,\n        Menu,\n        Spacer,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Box palette=\"negative\" padding=\"medium\">\n    <Menu.Container>\n        <Menu.Heading variation=\"divider\">\n            FEEDBACK\n        </Menu.Heading>\n\n        <Menu.Section>\n            <Menu.Button active>\n                Dot\n                <Spacer />\n                <Text is=\"span\">ICON</Text>\n            </Menu.Button>\n\n            <Menu.Button>\n                Spinner\n                <Spacer />\n                <Text is=\"span\">ICON</Text>\n            </Menu.Button>\n        </Menu.Section>\n    </Menu.Container>\n</Box>"},{"identifier":"/playground?snippet=monthpicker-custom-format","title":"MonthPicker Custom Format","text":"<script>\n    import {MonthPicker} from \"@kahi-ui/framework\";\n\n    const timestamp = \"2021-01-01\";\n</script>\n\n<MonthPicker\n    palette=\"accent\"\n    month=\"long\"\n    width=\"content-max\"\n    {timestamp}\n/>"},{"identifier":"/playground?snippet=monthpicker-disabled","title":"MonthPicker Disabled","text":"<script>\n    import {MonthPicker} from \"@kahi-ui/framework\";\n\n    const timestamp = \"2021-01-01\";\n</script>\n\n<MonthPicker\n    palette=\"accent\"\n    width=\"content-max\"\n    {timestamp}\n    disabled\n/>"},{"identifier":"/playground?snippet=monthpicker-disabled-months","title":"MonthPicker Disabled Months","text":"<script>\n    import {MonthPicker} from \"@kahi-ui/framework\";\n\n    const timestamp = \"2021-01-01\";\n\n    const disabled = [\"2021-06-01\", \"2021-12-01\"];\n</script>\n\n<MonthPicker\n    palette=\"accent\"\n    width=\"content-max\"\n    {disabled}\n    {timestamp}\n/>"},{"identifier":"/playground?snippet=monthpicker-highlight","title":"MonthPicker Highlight","text":"<script>\n    import {MonthPicker} from \"@kahi-ui/framework\";\n\n    const timestamp = \"2021-01-01\";\n\n    const highlight = [\n        \"2021-10-01\",\n        \"2021-11-01\",\n        \"2021-12-01\",\n    ];\n</script>\n\n<MonthPicker\n    palette=\"accent\"\n    width=\"content-max\"\n    {highlight}\n    {timestamp}\n/>"},{"identifier":"/playground?snippet=monthpicker-maximum--minimum","title":"MonthPicker Maximum + Minimum","text":"<script>\n    import {MonthPicker} from \"@kahi-ui/framework\";\n\n    const timestamp = \"2021-01-01\";\n\n    const max = \"2021-07-01\";\n    const min = \"2021-05-01\";\n</script>\n\n<MonthPicker\n    palette=\"accent\"\n    width=\"content-max\"\n    {max}\n    {min}\n    {timestamp}\n/>"},{"identifier":"/playground?snippet=monthpicker-multiple","title":"MonthPicker Multiple","text":"<script>\n    import {MonthPicker} from \"@kahi-ui/framework\";\n\n    const timestamp = \"2021-01-01\";\n    const value = [\"2021-06-01\", \"2021-12-01\"];\n</script>\n\n<MonthPicker\n    palette=\"accent\"\n    width=\"content-max\"\n    {timestamp}\n    {value}\n    multiple\n/>"},{"identifier":"/playground?snippet=monthpicker-once","title":"MonthPicker Once","text":"<script>\n    import {MonthPicker} from \"@kahi-ui/framework\";\n\n    const timestamp = \"2021-01-01\";\n    const value = [\"2021-06-01\"];\n</script>\n\n<MonthPicker\n    palette=\"accent\"\n    width=\"content-max\"\n    {timestamp}\n    {value}\n    once\n/>"},{"identifier":"/playground?snippet=monthpicker-preview","title":"MonthPicker Preview","text":"<script>\n    import {MonthPicker} from \"@kahi-ui/framework\";\n\n    const timestamp = \"2021-01-01\";\n    const value = [\"2021-06-01\"];\n</script>\n\n<MonthPicker\n    palette=\"accent\"\n    width=\"content-max\"\n    {timestamp}\n    {value}\n/>"},{"identifier":"/playground?snippet=monthpicker-readonly","title":"MonthPicker Readonly","text":"<script>\n    import {MonthPicker} from \"@kahi-ui/framework\";\n\n    const timestamp = \"2021-01-01\";\n</script>\n\n<MonthPicker\n    palette=\"accent\"\n    width=\"content-max\"\n    {timestamp}\n    readonly\n/>"},{"identifier":"/playground?snippet=monthpicker-sizing","title":"MonthPicker Sizing","text":"<script>\n    import {\n        MonthPicker,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n\n    const timestamp = \"2021-01-01\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    alignment_y=\"top\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n\n        <MonthPicker\n            palette=\"accent\"\n            width=\"content-max\"\n            {timestamp}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">NANO</Text>\n\n        <MonthPicker\n            palette=\"accent\"\n            sizing=\"nano\"\n            width=\"content-max\"\n            {timestamp}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">TINY</Text>\n\n        <MonthPicker\n            palette=\"accent\"\n            sizing=\"tiny\"\n            width=\"content-max\"\n            {timestamp}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">SMALL</Text>\n\n        <MonthPicker\n            palette=\"accent\"\n            sizing=\"small\"\n            width=\"content-max\"\n            {timestamp}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">MEDIUM</Text>\n\n        <MonthPicker\n            palette=\"accent\"\n            sizing=\"medium\"\n            width=\"content-max\"\n            {timestamp}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">LARGE</Text>\n\n        <MonthPicker\n            palette=\"accent\"\n            sizing=\"large\"\n            width=\"content-max\"\n            {timestamp}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">HUGE</Text>\n\n        <MonthPicker\n            palette=\"accent\"\n            sizing=\"huge\"\n            width=\"content-max\"\n            {timestamp}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">MASSIVE</Text>\n\n        <MonthPicker\n            palette=\"accent\"\n            sizing=\"massive\"\n            width=\"content-max\"\n            {timestamp}\n        />\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=monthstepper-custom-format","title":"MonthStepper Custom Format","text":"<script>\n    import {MonthStepper} from \"@kahi-ui/framework\";\n\n    const value = \"2021-06-01\";\n</script>\n\n<MonthStepper\n    palette=\"accent\"\n    month=\"numeric\"\n    year=\"2-digit\"\n    {value}\n/>"},{"identifier":"/playground?snippet=monthstepper-disabled","title":"MonthStepper Disabled","text":"<script>\n    import {MonthStepper} from \"@kahi-ui/framework\";\n\n    const value = \"2021-06-01\";\n</script>\n\n<MonthStepper palette=\"accent\" {value} disabled />"},{"identifier":"/playground?snippet=monthstepper-maximum--minimum","title":"MonthStepper Maximum + Minimum","text":"<script>\n    import {MonthStepper} from \"@kahi-ui/framework\";\n\n    const value = \"2021-06-01\";\n\n    const max = \"2021-07-01\";\n    const min = \"2021-05-01\";\n</script>\n\n<MonthStepper palette=\"accent\" {max} {min} {value} />"},{"identifier":"/playground?snippet=monthstepper-preview","title":"MonthStepper Preview","text":"<script>\n    import {MonthStepper} from \"@kahi-ui/framework\";\n\n    const value = \"2021-06-01\";\n</script>\n\n<MonthStepper palette=\"accent\" {value} />"},{"identifier":"/playground?snippet=monthstepper-readonly","title":"MonthStepper Readonly","text":"<script>\n    import {MonthStepper} from \"@kahi-ui/framework\";\n\n    const value = \"2021-06-01\";\n</script>\n\n<MonthStepper palette=\"accent\" {value} readonly />"},{"identifier":"/playground?snippet=monthstepper-sizing","title":"MonthStepper Sizing","text":"<script>\n    import {\n        MonthStepper,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n\n    const value = \"2021-06-01\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    alignment_y=\"top\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n\n        <MonthStepper palette=\"accent\" {value} />\n    </div>\n\n    <div>\n        <Text is=\"strong\">NANO</Text>\n\n        <MonthStepper\n            palette=\"accent\"\n            sizing=\"nano\"\n            {value}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">TINY</Text>\n\n        <MonthStepper\n            palette=\"accent\"\n            sizing=\"tiny\"\n            {value}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">SMALL</Text>\n\n        <MonthStepper\n            palette=\"accent\"\n            sizing=\"small\"\n            {value}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">MEDIUM</Text>\n\n        <MonthStepper\n            palette=\"accent\"\n            sizing=\"medium\"\n            {value}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">LARGE</Text>\n\n        <MonthStepper\n            palette=\"accent\"\n            sizing=\"large\"\n            {value}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">HUGE</Text>\n\n        <MonthStepper\n            palette=\"accent\"\n            sizing=\"huge\"\n            {value}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">MASSIVE</Text>\n\n        <MonthStepper\n            palette=\"accent\"\n            sizing=\"massive\"\n            {value}\n        />\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=monthstepper-step","title":"MonthStepper Step","text":"<script>\n    import {MonthStepper} from \"@kahi-ui/framework\";\n\n    const value = \"2021-06-01\";\n</script>\n\n<MonthStepper palette=\"accent\" steps={3} {value} />"},{"identifier":"/playground?snippet=mosaic-item-span","title":"Mosaic Item Span","text":"<script>\n    import {Box, Mosaic} from \"@kahi-ui/framework\";\n</script>\n\n<Mosaic.Container sizing=\"tiny\" spacing=\"medium\">\n    <Box palette=\"alert\" height=\"icon-massive\" />\n    <Mosaic.Item\n        span_x={[\"3\", \"mobile:1\", \"tablet:2\"]}\n    >\n        <Box\n            palette=\"affirmative\"\n            height=\"icon-massive\"\n        />\n    </Mosaic.Item>\n    <Box palette=\"negative\" height=\"icon-massive\" />\n\n    <Box palette=\"affirmative\" height=\"icon-massive\" />\n    <Box palette=\"negative\" height=\"icon-massive\" />\n    <Box palette=\"alert\" height=\"icon-massive\" />\n\n    <Box palette=\"alert\" height=\"icon-massive\" />\n    <Box palette=\"affirmative\" height=\"icon-massive\" />\n    <Box palette=\"negative\" height=\"icon-massive\" />\n\n    <Mosaic.Item span_x=\"2\">\n        <Box\n            palette=\"negative\"\n            height=\"icon-massive\"\n        />\n    </Mosaic.Item>\n    <Box palette=\"alert\" height=\"icon-massive\" />\n    <Box palette=\"affirmative\" height=\"icon-massive\" />\n\n    <Box palette=\"affirmative\" height=\"icon-massive\" />\n    <Box palette=\"negative\" height=\"icon-massive\" />\n    <Box palette=\"alert\" height=\"icon-massive\" />\n</Mosaic.Container>"},{"identifier":"/playground?snippet=mosaic-preview","title":"Mosaic Preview","text":"<script>\n    import {Box, Mosaic} from \"@kahi-ui/framework\";\n</script>\n\n<Mosaic.Container sizing=\"tiny\" spacing=\"medium\">\n    <Box palette=\"alert\" height=\"icon-massive\" />\n    <Box palette=\"affirmative\" height=\"icon-massive\" />\n    <Box palette=\"negative\" height=\"icon-massive\" />\n\n    <Box palette=\"affirmative\" height=\"icon-massive\" />\n    <Box palette=\"negative\" height=\"icon-massive\" />\n    <Box palette=\"alert\" height=\"icon-massive\" />\n\n    <Box palette=\"alert\" height=\"icon-massive\" />\n    <Box palette=\"affirmative\" height=\"icon-massive\" />\n    <Box palette=\"negative\" height=\"icon-massive\" />\n\n    <Box palette=\"negative\" height=\"icon-massive\" />\n    <Box palette=\"alert\" height=\"icon-massive\" />\n    <Box palette=\"affirmative\" height=\"icon-massive\" />\n\n    <Box palette=\"affirmative\" height=\"icon-massive\" />\n    <Box palette=\"negative\" height=\"icon-massive\" />\n    <Box palette=\"alert\" height=\"icon-massive\" />\n</Mosaic.Container>"},{"identifier":"/playground?snippet=mosaic-sizing","title":"Mosaic Sizing","text":"<script>\n    import {\n        Box,\n        Mosaic,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">NANO</Text>\n        <Box palette=\"inverse\" padding=\"small\">\n            <Mosaic.Container\n                sizing=\"nano\"\n                spacing=\"medium\"\n            >\n                <Box\n                    palette=\"alert\"\n                    height=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"affirmative\"\n                    height=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"negative\"\n                    height=\"icon-massive\"\n                />\n            </Mosaic.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">TINY</Text>\n        <Box palette=\"inverse\" padding=\"small\">\n            <Mosaic.Container\n                sizing=\"tiny\"\n                spacing=\"medium\"\n            >\n                <Box\n                    palette=\"alert\"\n                    height=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"affirmative\"\n                    height=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"negative\"\n                    height=\"icon-massive\"\n                />\n            </Mosaic.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">SMALL</Text>\n\n        <Box palette=\"inverse\" padding=\"small\">\n            <Mosaic.Container\n                sizing=\"small\"\n                spacing=\"medium\"\n            >\n                <Box\n                    palette=\"alert\"\n                    height=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"affirmative\"\n                    height=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"negative\"\n                    height=\"icon-massive\"\n                />\n            </Mosaic.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">MEDIUM</Text>\n\n        <Box palette=\"inverse\" padding=\"small\">\n            <Mosaic.Container\n                sizing=\"medium\"\n                spacing=\"medium\"\n            >\n                <Box\n                    palette=\"alert\"\n                    height=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"affirmative\"\n                    height=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"negative\"\n                    height=\"icon-massive\"\n                />\n            </Mosaic.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">LARGE</Text>\n\n        <Box palette=\"inverse\" padding=\"small\">\n            <Mosaic.Container\n                sizing=\"large\"\n                spacing=\"medium\"\n            >\n                <Box\n                    palette=\"alert\"\n                    height=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"affirmative\"\n                    height=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"negative\"\n                    height=\"icon-massive\"\n                />\n            </Mosaic.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">HUGE</Text>\n\n        <Box palette=\"inverse\" padding=\"small\">\n            <Mosaic.Container\n                sizing=\"huge\"\n                spacing=\"medium\"\n            >\n                <Box\n                    palette=\"alert\"\n                    height=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"affirmative\"\n                    height=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"negative\"\n                    height=\"icon-massive\"\n                />\n            </Mosaic.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">MASSIVE</Text>\n\n        <Box palette=\"inverse\" padding=\"small\">\n            <Mosaic.Container\n                sizing=\"massive\"\n                spacing=\"medium\"\n            >\n                <Box\n                    palette=\"alert\"\n                    height=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"affirmative\"\n                    height=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"negative\"\n                    height=\"icon-massive\"\n                />\n            </Mosaic.Container>\n        </Box>\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=mosaic-spacing","title":"Mosaic Spacing","text":"<script>\n    import {\n        Box,\n        Mosaic,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n        <Box palette=\"inverse\" padding=\"small\">\n            <Mosaic.Container sizing=\"tiny\">\n                <Box\n                    palette=\"alert\"\n                    height=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"affirmative\"\n                    height=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"negative\"\n                    height=\"icon-massive\"\n                />\n            </Mosaic.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">NANO</Text>\n        <Box palette=\"inverse\" padding=\"small\">\n            <Mosaic.Container\n                sizing=\"tiny\"\n                spacing=\"nano\"\n            >\n                <Box\n                    palette=\"alert\"\n                    height=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"affirmative\"\n                    height=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"negative\"\n                    height=\"icon-massive\"\n                />\n            </Mosaic.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">TINY</Text>\n        <Box palette=\"inverse\" padding=\"small\">\n            <Mosaic.Container\n                sizing=\"tiny\"\n                spacing=\"tiny\"\n            >\n                <Box\n                    palette=\"alert\"\n                    height=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"affirmative\"\n                    height=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"negative\"\n                    height=\"icon-massive\"\n                />\n            </Mosaic.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">SMALL</Text>\n        <Box palette=\"inverse\" padding=\"small\">\n            <Mosaic.Container\n                sizing=\"tiny\"\n                spacing=\"small\"\n            >\n                <Box\n                    palette=\"alert\"\n                    height=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"affirmative\"\n                    height=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"negative\"\n                    height=\"icon-massive\"\n                />\n            </Mosaic.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">MEDIUM</Text>\n        <Box palette=\"inverse\" padding=\"small\">\n            <Mosaic.Container\n                sizing=\"tiny\"\n                spacing=\"medium\"\n            >\n                <Box\n                    palette=\"alert\"\n                    height=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"affirmative\"\n                    height=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"negative\"\n                    height=\"icon-massive\"\n                />\n            </Mosaic.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">LARGE</Text>\n        <Box palette=\"inverse\" padding=\"small\">\n            <Mosaic.Container\n                sizing=\"tiny\"\n                spacing=\"large\"\n            >\n                <Box\n                    palette=\"alert\"\n                    height=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"affirmative\"\n                    height=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"negative\"\n                    height=\"icon-massive\"\n                />\n            </Mosaic.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">HUGE</Text>\n        <Box palette=\"inverse\" padding=\"small\">\n            <Mosaic.Container\n                sizing=\"tiny\"\n                spacing=\"huge\"\n            >\n                <Box\n                    palette=\"alert\"\n                    height=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"affirmative\"\n                    height=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"negative\"\n                    height=\"icon-massive\"\n                />\n            </Mosaic.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">MASSIVE</Text>\n        <Box palette=\"inverse\" padding=\"small\">\n            <Mosaic.Container\n                sizing=\"tiny\"\n                spacing=\"massive\"\n            >\n                <Box\n                    palette=\"alert\"\n                    height=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"affirmative\"\n                    height=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"negative\"\n                    height=\"icon-massive\"\n                />\n            </Mosaic.Container>\n        </Box>\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=mutation_observer-preview","title":"mutation_observer Preview","text":"<script>\n    import {\n        Button,\n        mutation_observer,\n    } from \"@kahi-ui/framework\";\n\n    let palette = \"affirmative\";\n</script>\n\n<Button\n    on:click={(event) =>\n        (palette =\n            palette === \"affirmative\"\n                ? \"negative\"\n                : \"affirmative\")}\n>\n    Toggle Palette\n</Button>\n\n<div\n    class=\"box\"\n    data-palette={palette}\n    use:mutation_observer={{\n        attributes: true,\n        on_mutate: (mutations) =>\n            console.log(\"on_mutate\", {mutations}),\n    }}\n>\n    click the above button and watch console for\n    logging\n</div>"},{"identifier":"/playground?snippet=numberinput-alignment","title":"NumberInput Alignment","text":"<script>\n    import {\n        NumberInput,\n        Stack,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <NumberInput\n        placeholder=\"DEFAULT NumberInput\"\n        span_x=\"20\"\n    />\n\n    <NumberInput\n        alignment_x=\"left\"\n        placeholder=\"LEFT NumberInput\"\n        span_x=\"20\"\n    />\n\n    <NumberInput\n        alignment_x=\"center\"\n        placeholder=\"CENTER NumberInput\"\n        span_x=\"20\"\n    />\n\n    <NumberInput\n        alignment_x=\"right\"\n        placeholder=\"RIGHT NumberInput\"\n        span_x=\"20\"\n    />\n\n    <NumberInput\n        alignment_x=\"justify\"\n        placeholder=\"JUSTIFY NumberInput\"\n        span_x=\"20\"\n    />\n</Stack.Container>"},{"identifier":"/playground?snippet=numberinput-block","title":"NumberInput Block","text":"<script>\n    import {\n        NumberInput,\n        Stack,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    alignment_y=\"top\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <NumberInput\n        variation=\"block\"\n        span_x=\"20\"\n        placeholder=\"This is a DEFAULT NumberInput\"\n    />\n\n    <NumberInput\n        variation=\"block\"\n        palette=\"accent\"\n        span_x=\"20\"\n        placeholder=\"This is a ACCENT NumberInput\"\n    />\n\n    <NumberInput\n        variation=\"block\"\n        palette=\"dark\"\n        span_x=\"20\"\n        placeholder=\"This is a DARK NumberInput\"\n    />\n\n    <NumberInput\n        variation=\"block\"\n        palette=\"light\"\n        span_x=\"20\"\n        placeholder=\"This is a LIGHT NumberInput\"\n    />\n\n    <NumberInput\n        variation=\"block\"\n        palette=\"alert\"\n        span_x=\"20\"\n        placeholder=\"This is a ALERT NumberInput\"\n    />\n\n    <NumberInput\n        variation=\"block\"\n        palette=\"affirmative\"\n        span_x=\"20\"\n        placeholder=\"This is a AFFIRMATIVE NumberInput\"\n    />\n\n    <NumberInput\n        variation=\"block\"\n        palette=\"negative\"\n        span_x=\"20\"\n        placeholder=\"This is a NEGATIVE NumberInput\"\n    />\n</Stack.Container>"},{"identifier":"/playground?snippet=numberinput-flush","title":"NumberInput Flush","text":"<script>\n    import {NumberInput} from \"@kahi-ui/framework\";\n</script>\n\nInput some text:\n<NumberInput\n    variation=\"flush\"\n    span_x=\"20\"\n    placeholder=\"This is a FLUSH NumberInput\"\n/>"},{"identifier":"/playground?snippet=numberinput-maximum--minimum","title":"NumberInput Maximum + Minimum","text":"<script>\n    import {NumberInput} from \"@kahi-ui/framework\";\n\n    let value = 42;\n</script>\n\n<NumberInput max={84} min={-84} bind:value />"},{"identifier":"/playground?snippet=numberinput-palette","title":"NumberInput Palette","text":"<script>\n    import {\n        NumberInput,\n        Stack,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    alignment_y=\"top\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <NumberInput\n        span_x=\"20\"\n        placeholder=\"This is a DEFAULT NumberInput\"\n    />\n\n    <NumberInput\n        palette=\"accent\"\n        span_x=\"20\"\n        placeholder=\"This is a ACCENT NumberInput\"\n    />\n\n    <NumberInput\n        palette=\"neutral\"\n        span_x=\"20\"\n        placeholder=\"This is a NEUTRAL NumberInput\"\n    />\n\n    <NumberInput\n        palette=\"dark\"\n        span_x=\"20\"\n        placeholder=\"This is a DARK NumberInput\"\n    />\n\n    <NumberInput\n        palette=\"light\"\n        span_x=\"20\"\n        placeholder=\"This is a LIGHT NumberInput\"\n    />\n\n    <NumberInput\n        palette=\"alert\"\n        span_x=\"20\"\n        placeholder=\"This is a ALERT NumberInput\"\n    />\n\n    <NumberInput\n        palette=\"affirmative\"\n        span_x=\"20\"\n        placeholder=\"This is a AFFIRMATIVE NumberInput\"\n    />\n\n    <NumberInput\n        palette=\"informative\"\n        span_x=\"20\"\n        placeholder=\"This is a INFORMATIVE NumberInput\"\n    />\n\n    <NumberInput\n        palette=\"negative\"\n        span_x=\"20\"\n        placeholder=\"This is a NEGATIVE NumberInput\"\n    />\n</Stack.Container>"},{"identifier":"/playground?snippet=numberinput-placeholder","title":"NumberInput Placeholder","text":"<script>\n    import {NumberInput} from \"@kahi-ui/framework\";\n</script>\n\n<NumberInput placeholder=\"...enter a number\" />"},{"identifier":"/playground?snippet=numberinput-preview","title":"NumberInput Preview","text":"<script>\n    import {NumberInput} from \"@kahi-ui/framework\";\n\n    let value = 42;\n</script>\n\n<NumberInput bind:value />"},{"identifier":"/playground?snippet=numberinput-radius","title":"NumberInput Radius","text":"<script>\n    import {\n        NumberInput,\n        Stack,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    alignment_y=\"top\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <NumberInput\n        span_x=\"20\"\n        placeholder=\"This is a DEFAULT NumberInput\"\n    />\n\n    <NumberInput\n        radius=\"none\"\n        span_x=\"20\"\n        placeholder=\"This is a NONE NumberInput\"\n    />\n\n    <NumberInput\n        radius=\"nano\"\n        span_x=\"20\"\n        placeholder=\"This is a NANO NumberInput\"\n    />\n\n    <NumberInput\n        radius=\"tiny\"\n        span_x=\"20\"\n        placeholder=\"This is a TINY NumberInput\"\n    />\n\n    <NumberInput\n        radius=\"small\"\n        span_x=\"20\"\n        placeholder=\"This is a SMALL NumberInput\"\n    />\n\n    <NumberInput\n        sizing=\"medium\"\n        span_x=\"20\"\n        placeholder=\"This is a MEDIUM NumberInput\"\n    />\n\n    <NumberInput\n        radius=\"large\"\n        span_x=\"20\"\n        placeholder=\"This is a LARGE NumberInput\"\n    />\n\n    <NumberInput\n        radius=\"huge\"\n        span_x=\"20\"\n        placeholder=\"This is a HUGE NumberInput\"\n    />\n\n    <NumberInput\n        radius=\"massive\"\n        span_x=\"20\"\n        placeholder=\"This is a MASSIVE NumberInput\"\n    />\n</Stack.Container>"},{"identifier":"/playground?snippet=numberinput-shapes","title":"NumberInput Shapes","text":"<script>\n    import {\n        NumberInput,\n        Stack,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    alignment_y=\"top\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <NumberInput\n        span_x=\"20\"\n        placeholder=\"This is a DEFAULT NumberInput\"\n    />\n\n    <NumberInput\n        shape=\"circle\"\n        span_x=\"20\"\n        placeholder=\"This is a CIRCLE NumberInput\"\n    />\n\n    <NumberInput\n        shape=\"pill\"\n        span_x=\"20\"\n        placeholder=\"This is a PILL NumberInput\"\n    />\n</Stack.Container>"},{"identifier":"/playground?snippet=numberinput-sizing","title":"NumberInput Sizing","text":"<script>\n    import {\n        NumberInput,\n        Stack,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    alignment_y=\"top\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <NumberInput\n        span_x=\"20\"\n        placeholder=\"This is a DEFAULT NumberInput\"\n    />\n\n    <NumberInput\n        sizing=\"nano\"\n        span_x=\"20\"\n        placeholder=\"This is a NANO NumberInput\"\n    />\n\n    <NumberInput\n        sizing=\"tiny\"\n        span_x=\"20\"\n        placeholder=\"This is a TINY NumberInput\"\n    />\n\n    <NumberInput\n        sizing=\"small\"\n        span_x=\"20\"\n        placeholder=\"This is a SMALL NumberInput\"\n    />\n\n    <NumberInput\n        sizing=\"medium\"\n        span_x=\"20\"\n        placeholder=\"This is a MEDIUM NumberInput\"\n    />\n\n    <NumberInput\n        sizing=\"large\"\n        span_x=\"20\"\n        placeholder=\"This is a LARGE NumberInput\"\n    />\n\n    <NumberInput\n        sizing=\"huge\"\n        span_x=\"20\"\n        placeholder=\"This is a HUGE NumberInput\"\n    />\n\n    <NumberInput\n        sizing=\"massive\"\n        span_x=\"20\"\n        placeholder=\"This is a MASSIVE NumberInput\"\n    />\n</Stack.Container>"},{"identifier":"/playground?snippet=numberinput-span-x","title":"NumberInput Span X","text":"<script>\n    import {NumberInput} from \"@kahi-ui/framework\";\n</script>\n\n<NumberInput span_x=\"2\" />"},{"identifier":"/playground?snippet=omni-collapsing","title":"Omni Collapsing","text":"<script>\n    import {\n        Anchor,\n        Box,\n        Divider,\n        Menu,\n        Omni,\n        Popover,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Omni.Container palette=\"inverse\" width=\"100\">\n    <Omni.Header>\n        <Anchor href=\"#\">Kahi UI</Anchor>\n        <Divider orientation=\"vertical\" />\n        <Anchor href=\"#\">\n            <Text is=\"small\">v0.6.0</Text>\n        </Anchor>\n    </Omni.Header>\n\n    <Omni.Section hidden={[\"mobile\", \"tablet\"]}>\n        <Menu.Container\n            orientation=\"horizontal\"\n            sizing=\"tiny\"\n        >\n            <Menu.Button active>Docs</Menu.Button>\n            <Menu.Button>Playground</Menu.Button>\n            <Menu.Button>Storybook</Menu.Button>\n        </Menu.Container>\n    </Omni.Section>\n\n    <Omni.Footer>\n        <Menu.Container\n            hidden={[\"mobile\", \"tablet\"]}\n            orientation=\"horizontal\"\n            sizing=\"tiny\"\n        >\n            <Menu.Button>GitHub</Menu.Button>\n        </Menu.Container>\n\n        <Popover.Container\n            hidden={[\"desktop\", \"widescreen\"]}\n            logic_id=\"omni-collapsing\"\n            dismissible\n        >\n            <Popover.Button\n                palette=\"light\"\n                variation=\"clear\"\n            >\n                +\n            </Popover.Button>\n\n            <Popover.Section\n                alignment_x=\"left\"\n                spacing=\"small\"\n            >\n                <Box\n                    variation=\"borders\"\n                    elevation=\"medium\"\n                    padding=\"medium\"\n                    radius=\"tiny\"\n                >\n                    <Menu.Container sizing=\"tiny\">\n                        <Menu.Button active>\n                            Docs\n                        </Menu.Button>\n\n                        <Menu.Button>\n                            Playground\n                        </Menu.Button>\n\n                        <Menu.Button>\n                            Storybook\n                        </Menu.Button>\n\n                        <Menu.Button>\n                            GitHub\n                        </Menu.Button>\n                    </Menu.Container>\n                </Box>\n            </Popover.Section>\n        </Popover.Container>\n    </Omni.Footer>\n</Omni.Container>"},{"identifier":"/playground?snippet=omni-palette","title":"Omni Palette","text":"<script>\n    import {\n        Anchor,\n        Divider,\n        Omni,\n        Stack,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container spacing=\"medium\">\n    <Omni.Container width=\"100\">\n        <Omni.Header>\n            <Anchor href=\"#\">Kahi UI</Anchor>\n            <Divider orientation=\"vertical\" />\n            DEFAULT\n        </Omni.Header>\n    </Omni.Container>\n\n    <Omni.Container palette=\"accent\" width=\"100\">\n        <Omni.Header>\n            <Anchor href=\"#\">Kahi UI</Anchor>\n            <Divider orientation=\"vertical\" />\n            ACCENT\n        </Omni.Header>\n    </Omni.Container>\n\n    <Omni.Container palette=\"neutral\" width=\"100\">\n        <Omni.Header>\n            <Anchor href=\"#\">Kahi UI</Anchor>\n            <Divider orientation=\"vertical\" />\n            NEUTRAL\n        </Omni.Header>\n    </Omni.Container>\n\n    <Omni.Container palette=\"dark\" width=\"100\">\n        <Omni.Header>\n            <Anchor href=\"#\">Kahi UI</Anchor>\n            <Divider orientation=\"vertical\" />\n            DARK\n        </Omni.Header>\n    </Omni.Container>\n\n    <Omni.Container palette=\"light\" width=\"100\">\n        <Omni.Header>\n            <Anchor href=\"#\">Kahi UI</Anchor>\n            <Divider orientation=\"vertical\" />\n            LIGHT\n        </Omni.Header>\n    </Omni.Container>\n\n    <Omni.Container palette=\"alert\" width=\"100\">\n        <Omni.Header>\n            <Anchor href=\"#\">Kahi UI</Anchor>\n            <Divider orientation=\"vertical\" />\n            ALERT\n        </Omni.Header>\n    </Omni.Container>\n\n    <Omni.Container palette=\"affirmative\" width=\"100\">\n        <Omni.Header>\n            <Anchor href=\"#\">Kahi UI</Anchor>\n            <Divider orientation=\"vertical\" />\n            AFFIRMATIVE\n        </Omni.Header>\n    </Omni.Container>\n\n    <Omni.Container palette=\"informative\" width=\"100\">\n        <Omni.Header>\n            <Anchor href=\"#\">Kahi UI</Anchor>\n            <Divider orientation=\"vertical\" />\n            INFORMATIVE\n        </Omni.Header>\n    </Omni.Container>\n\n    <Omni.Container palette=\"negative\" width=\"100\">\n        <Omni.Header>\n            <Anchor href=\"#\">Kahi UI</Anchor>\n            <Divider orientation=\"vertical\" />\n            NEGATIVE\n        </Omni.Header>\n    </Omni.Container>\n</Stack.Container>"},{"identifier":"/playground?snippet=omni-placement","title":"Omni Placement","text":"<script>\n    import {\n        Anchor,\n        Divider,\n        Omni,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Omni.Container\n    placement=\"bottom\"\n    palette=\"inverse\"\n    width=\"100\"\n>\n    <Omni.Header>\n        <Anchor href=\"#\">Kahi UI</Anchor>\n        <Divider orientation=\"vertical\" />\n        <Anchor href=\"#\">\n            <Text is=\"small\">v0.6.0</Text>\n        </Anchor>\n    </Omni.Header>\n</Omni.Container>"},{"identifier":"/playground?snippet=omni-preview","title":"Omni Preview","text":"<script>\n    import {\n        Anchor,\n        Divider,\n        Menu,\n        Omni,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Omni.Container palette=\"dark\" width=\"100\">\n    <Omni.Header>\n        <Anchor href=\"#\">Kahi UI</Anchor>\n        <Divider orientation=\"vertical\" />\n        <Anchor href=\"#\">\n            <Text is=\"small\">v0.6.0</Text>\n        </Anchor>\n    </Omni.Header>\n\n    <Omni.Section>\n        <Menu.Container\n            orientation=\"horizontal\"\n            sizing=\"tiny\"\n        >\n            <Menu.Button active>Docs</Menu.Button>\n            <Menu.Button>Playground</Menu.Button>\n            <Menu.Button>Storybook</Menu.Button>\n        </Menu.Container>\n    </Omni.Section>\n\n    <Omni.Footer>\n        <Menu.Container\n            orientation=\"horizontal\"\n            sizing=\"tiny\"\n        >\n            <Menu.Button>GitHub</Menu.Button>\n        </Menu.Container>\n    </Omni.Footer>\n</Omni.Container>"},{"identifier":"/playground?snippet=overflow_clipping-preview","title":"overflow_clipping Preview","text":"<script>\n    import {\n        Box,\n        Check,\n        Heading,\n        Scrollable,\n        overflow_clipping,\n    } from \"@kahi-ui/framework\";\n\n    let additional_content = false;\n\n    let horizontal_clipping = false;\n    let vertical_clipping = false;\n</script>\n\n<Check\n    id=\"overflow-clipping-preview-content\"\n    bind:state={additional_content}\n>\n    Toggle on additional content\n</Check>\n\n<Scrollable\n    actions={[\n        [\n            overflow_clipping,\n            {\n                enabled: true,\n                on_clip: (entry) =>\n                    (horizontal_clipping =\n                        entry.horizontal),\n            },\n        ],\n    ]}\n    style=\"width:15rem;\"\n>\n    <Box\n        palette={horizontal_clipping\n            ? \"affirmative\"\n            : \"negative\"}\n    >\n        <Heading style=\"white-space:nowrap;\">\n            Hello World!\n            {#if additional_content}\n                And again!\n            {/if}\n        </Heading>\n    </Box>\n</Scrollable>\n\n<Scrollable\n    margin_top=\"medium\"\n    actions={[\n        [\n            overflow_clipping,\n            {\n                enabled: true,\n                on_clip: (entry) =>\n                    (vertical_clipping =\n                        entry.vertical),\n            },\n        ],\n    ]}\n    style=\"height:3rem;\"\n>\n    <Box\n        palette={vertical_clipping\n            ? \"affirmative\"\n            : \"negative\"}\n    >\n        <Heading>Hello World!</Heading>\n\n        {#if additional_content}\n            <Heading>And again!</Heading>\n        {/if}\n    </Box>\n</Scrollable>"},{"identifier":"/playground?snippet=overlay-alignment","title":"Overlay Alignment","text":"<script>\n    import {\n        Button,\n        Code,\n        Overlay,\n        Tile,\n        Text,\n    } from \"@kahi-ui/framework\";\n    import {X} from \"lucide-svelte\";\n</script>\n\n<Overlay.Container>\n    <Overlay.Section\n        spacing=\"medium\"\n        alignment_x=\"right\"\n        alignment_y=\"bottom\"\n        padding_bottom=\"medium\"\n        padding_right=\"medium\"\n    >\n        <Tile.Container\n            elevation=\"medium\"\n            width=\"content-max\"\n            max_width=\"75\"\n        >\n            <Tile.Section>\n                <Tile.Header>File Deleted</Tile.Header>\n\n                <Text>\n                    <Code>important_file.docx</Code> was\n                    deleted from cloud storage.\n                </Text>\n            </Tile.Section>\n\n            <Tile.Footer>\n                <Button\n                    palette=\"negative\"\n                    variation=\"clear\"\n                    sizing=\"small\"\n                >\n                    <X size=\"1em\" />\n                </Button>\n            </Tile.Footer>\n        </Tile.Container>\n\n        <Tile.Container\n            elevation=\"medium\"\n            width=\"content-max\"\n            max_width=\"75\"\n        >\n            <Tile.Section>\n                <Tile.Header>File Deleted</Tile.Header>\n\n                <Text>\n                    <Code>other_file.png</Code> was deleted\n                    from cloud storage.\n                </Text>\n            </Tile.Section>\n\n            <Tile.Footer>\n                <Button\n                    palette=\"negative\"\n                    variation=\"clear\"\n                    sizing=\"small\"\n                >\n                    <X size=\"1em\" />\n                </Button>\n            </Tile.Footer>\n        </Tile.Container>\n    </Overlay.Section>\n</Overlay.Container>"},{"identifier":"/playground?snippet=overlay-auto-focus","title":"Overlay Auto Focus","text":"<script>\n    import {\n        Button,\n        Card,\n        Overlay,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Button is=\"label\" for=\"overlay-auto-focus\">\n    Open AUTO FOCUSED Overlay\n</Button>\n\n<Overlay.Container logic_id=\"overlay-auto-focus\">\n    <Overlay.Section>\n        <Card.Container\n            palette=\"inverse\"\n            max_width=\"75\"\n        >\n            <Card.Header>\n                AUTO FOCUSED Overlay\n            </Card.Header>\n\n            <Card.Footer>\n                <Overlay.Button\n                    palette=\"auto\"\n                    variation=\"clear\"\n                >\n                    Dismiss #1\n                </Overlay.Button>\n\n                <Overlay.Button\n                    palette=\"auto\"\n                    variation=\"clear\"\n                >\n                    Dismiss #2\n                </Overlay.Button>\n\n                <Overlay.Button\n                    palette=\"auto\"\n                    variation=\"clear\"\n                >\n                    Dismiss #3\n                </Overlay.Button>\n\n                <Overlay.Button\n                    palette=\"auto\"\n                    variation=\"clear\"\n                >\n                    Dismiss #4\n                </Overlay.Button>\n\n                <Overlay.Button\n                    palette=\"auto\"\n                    variation=\"clear\"\n                >\n                    Dismiss #5\n                </Overlay.Button>\n            </Card.Footer>\n        </Card.Container>\n    </Overlay.Section>\n</Overlay.Container>"},{"identifier":"/playground?snippet=overlay-auto-focus-target","title":"Overlay Auto Focus Target","text":"<script>\n    import {\n        Button,\n        Card,\n        Overlay,\n    } from \"@kahi-ui/framework\";\n\n    let target_element;\n</script>\n\n<Button is=\"label\" for=\"overlay-auto-focus-target\">\n    Open AUTO FOCUSED Overlay\n</Button>\n\n<Overlay.Container\n    logic_id=\"overlay-auto-focus-target\"\n    focus_target={target_element}\n>\n    <Overlay.Section>\n        <Card.Container\n            palette=\"inverse\"\n            max_width=\"75\"\n        >\n            <Card.Header>\n                AUTO FOCUSED Overlay\n            </Card.Header>\n\n            <Card.Footer>\n                <Overlay.Button\n                    palette=\"auto\"\n                    variation=\"clear\"\n                >\n                    Dismiss #1\n                </Overlay.Button>\n\n                <Overlay.Button\n                    palette=\"auto\"\n                    variation=\"clear\"\n                >\n                    Dismiss #2\n                </Overlay.Button>\n\n                <Overlay.Button\n                    bind:element={target_element}\n                    palette=\"auto\"\n                    variation=\"clear\"\n                >\n                    Dismiss #3\n                </Overlay.Button>\n\n                <Overlay.Button\n                    palette=\"auto\"\n                    variation=\"clear\"\n                >\n                    Dismiss #4\n                </Overlay.Button>\n\n                <Overlay.Button\n                    palette=\"auto\"\n                    variation=\"clear\"\n                >\n                    Dismiss #5\n                </Overlay.Button>\n            </Card.Footer>\n        </Card.Container>\n    </Overlay.Section>\n</Overlay.Container>"},{"identifier":"/playground?snippet=overlay-backdrop","title":"Overlay Backdrop","text":"<script>\n    import {\n        Button,\n        Card,\n        Overlay,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Button is=\"label\" for=\"overlay-backdrop-no\">\n    Open NO BACKDROP Overlay\n</Button>\n\n<Button is=\"label\" for=\"overlay-backdrop-has\">\n    Open HAS BACKDROP Overlay\n</Button>\n\n<Overlay.Container logic_id=\"overlay-backdrop-no\">\n    <Overlay.Section>\n        <Card.Container\n            palette=\"inverse\"\n            max_width=\"75\"\n        >\n            <Card.Header>\n                NO BACKDROP Overlay\n            </Card.Header>\n\n            <Card.Footer>\n                <Overlay.Button\n                    palette=\"auto\"\n                    variation=\"clear\"\n                >\n                    Dismiss\n                </Overlay.Button>\n            </Card.Footer>\n        </Card.Container>\n    </Overlay.Section>\n</Overlay.Container>\n\n<Overlay.Container logic_id=\"overlay-backdrop-has\">\n    <Overlay.Backdrop />\n\n    <Overlay.Section>\n        <Card.Container\n            palette=\"inverse\"\n            max_width=\"75\"\n        >\n            <Card.Header>\n                HAS BACKDROP Overlay\n            </Card.Header>\n\n            <Card.Footer>\n                <Overlay.Button\n                    palette=\"auto\"\n                    variation=\"clear\"\n                >\n                    Dismiss\n                </Overlay.Button>\n            </Card.Footer>\n        </Card.Container>\n    </Overlay.Section>\n</Overlay.Container>"},{"identifier":"/playground?snippet=overlay-dismissible","title":"Overlay Dismissible","text":"<script>\n    import {\n        Button,\n        Card,\n        Overlay,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Button is=\"label\" for=\"overlay-dismissible-disabled\">\n    Open NON-DISMISSIBLE Overlay\n</Button>\n\n<Button is=\"label\" for=\"overlay-dismissible-enabled\">\n    Open DISMISSIBLE Overlay\n</Button>\n\n<Overlay.Container\n    logic_id=\"overlay-dismissible-disabled\"\n>\n    <Overlay.Backdrop />\n\n    <Overlay.Section>\n        <Card.Container\n            palette=\"inverse\"\n            max_width=\"75\"\n        >\n            <Card.Header>\n                NON-DISMISSIBLE Overlay\n            </Card.Header>\n\n            <Card.Footer>\n                <Overlay.Button\n                    palette=\"auto\"\n                    variation=\"clear\"\n                >\n                    Dismiss\n                </Overlay.Button>\n            </Card.Footer>\n        </Card.Container>\n    </Overlay.Section>\n</Overlay.Container>\n\n<Overlay.Container\n    logic_id=\"overlay-dismissible-enabled\"\n    dismissible\n>\n    <Overlay.Backdrop />\n\n    <Overlay.Section>\n        <Card.Container\n            palette=\"inverse\"\n            max_width=\"75\"\n        >\n            <Card.Header>\n                DISMISSIBLE Overlay\n            </Card.Header>\n\n            <Card.Footer>\n                <Overlay.Button\n                    palette=\"auto\"\n                    variation=\"clear\"\n                >\n                    Dismiss\n                </Overlay.Button>\n            </Card.Footer>\n        </Card.Container>\n    </Overlay.Section>\n</Overlay.Container>"},{"identifier":"/playground?snippet=overlay-focus-trapping","title":"Overlay Focus Trapping","text":"<script>\n    import {\n        Button,\n        Card,\n        Overlay,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Button is=\"label\" for=\"overlay-focus-trapping\">\n    Open FOCUS TRAPPED Overlay\n</Button>\n\n<Overlay.Container logic_id=\"overlay-focus-trapping\">\n    <Overlay.Section>\n        <Card.Container\n            palette=\"inverse\"\n            max_width=\"75\"\n        >\n            <Card.Header>\n                FOCUS TRAPPED Overlay\n            </Card.Header>\n\n            <Card.Footer>\n                <Overlay.Button\n                    tabindex=\"3\"\n                    palette=\"auto\"\n                    variation=\"clear\"\n                >\n                    Dismiss #3\n                </Overlay.Button>\n\n                <Overlay.Button\n                    tabindex=\"1\"\n                    palette=\"auto\"\n                    variation=\"clear\"\n                >\n                    Dismiss #1\n                </Overlay.Button>\n\n                <Overlay.Button\n                    tabindex=\"5\"\n                    palette=\"auto\"\n                    variation=\"clear\"\n                >\n                    Dismiss #5\n                </Overlay.Button>\n\n                <Overlay.Button\n                    tabindex=\"4\"\n                    palette=\"auto\"\n                    variation=\"clear\"\n                >\n                    Dismiss #4\n                </Overlay.Button>\n\n                <Overlay.Button\n                    tabindex=\"2\"\n                    palette=\"auto\"\n                    variation=\"clear\"\n                >\n                    Dismiss #2\n                </Overlay.Button>\n            </Card.Footer>\n        </Card.Container>\n    </Overlay.Section>\n</Overlay.Container>"},{"identifier":"/playground?snippet=overlay-focus-trapping-first--last","title":"Overlay Focus Trapping First + Last","text":"<script>\n    import {\n        Button,\n        Card,\n        Overlay,\n    } from \"@kahi-ui/framework\";\n\n    let first_element;\n    let last_element;\n</script>\n\n<Button\n    is=\"label\"\n    for=\"overlay-focus-trapping-first-last\"\n>\n    Open FOCUS TRAPPED Overlay\n</Button>\n\n<Overlay.Container\n    logic_id=\"overlay-focus-trapping-first-last\"\n    focus_first={first_element}\n    focus_last={last_element}\n>\n    <Overlay.Section>\n        <Card.Container\n            palette=\"inverse\"\n            max_width=\"75\"\n        >\n            <Card.Header>\n                FOCUS TRAPPED Overlay\n            </Card.Header>\n\n            <Card.Footer>\n                <Overlay.Button\n                    tabindex=\"3\"\n                    palette=\"auto\"\n                    variation=\"clear\"\n                >\n                    Dismiss #3\n                </Overlay.Button>\n\n                <Overlay.Button\n                    bind:element={first_element}\n                    tabindex=\"1\"\n                    palette=\"auto\"\n                    variation=\"clear\"\n                >\n                    Dismiss #1\n                </Overlay.Button>\n\n                <Overlay.Button\n                    bind:element={last_element}\n                    tabindex=\"5\"\n                    palette=\"auto\"\n                    variation=\"clear\"\n                >\n                    Dismiss #5\n                </Overlay.Button>\n\n                <Overlay.Button\n                    tabindex=\"4\"\n                    palette=\"auto\"\n                    variation=\"clear\"\n                >\n                    Dismiss #4\n                </Overlay.Button>\n\n                <Overlay.Button\n                    tabindex=\"2\"\n                    palette=\"auto\"\n                    variation=\"clear\"\n                >\n                    Dismiss #2\n                </Overlay.Button>\n            </Card.Footer>\n        </Card.Container>\n    </Overlay.Section>\n</Overlay.Container>"},{"identifier":"/playground?snippet=overlay-loading","title":"Overlay Loading","text":"<script>\n    import {\n        Button,\n        Card,\n        Overlay,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Button is=\"label\" for=\"overlay-lazy\">\n    Open LAZY Overlay\n</Button>\n\n<Overlay.Container\n    logic_id=\"overlay-lazy\"\n    loading=\"lazy\"\n>\n    <Overlay.Section>\n        <Card.Container\n            palette=\"inverse\"\n            max_width=\"75\"\n        >\n            <Card.Header>LAZY Overlay</Card.Header>\n\n            <Card.Footer>\n                <Overlay.Button\n                    palette=\"auto\"\n                    variation=\"clear\"\n                >\n                    Dismiss\n                </Overlay.Button>\n            </Card.Footer>\n        </Card.Container>\n    </Overlay.Section>\n</Overlay.Container>"},{"identifier":"/playground?snippet=overlay-logic-id","title":"Overlay Logic ID","text":"<script>\n    import {\n        Button,\n        Card,\n        Overlay,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Button is=\"label\" for=\"overlay-logic-id\">\n    Open Overlay\n</Button>\n\n<Overlay.Container logic_id=\"overlay-logic-id\">\n    <Overlay.Section>\n        <Card.Container\n            palette=\"inverse\"\n            max_width=\"75\"\n        >\n            <Card.Header>Opened Overlay</Card.Header>\n\n            <Card.Footer>\n                <Overlay.Button\n                    palette=\"auto\"\n                    variation=\"clear\"\n                >\n                    Dismiss\n                </Overlay.Button>\n            </Card.Footer>\n        </Card.Container>\n    </Overlay.Section>\n</Overlay.Container>"},{"identifier":"/playground?snippet=overlay-once","title":"Overlay Once","text":"<script>\n    import {\n        Button,\n        Card,\n        Overlay,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Button is=\"label\" for=\"overlay-once-disabled\">\n    Open NON-ONCE Overlay\n</Button>\n\n<Button is=\"label\" for=\"overlay-once-enabled\">\n    Open ONCE Overlay\n</Button>\n\n<Overlay.Container logic_id=\"overlay-once-disabled\">\n    <Overlay.Backdrop />\n\n    <Overlay.Section>\n        <Card.Container\n            palette=\"inverse\"\n            max_width=\"75\"\n        >\n            <Card.Header>NON-ONCE Overlay</Card.Header>\n\n            <Card.Footer>\n                <Overlay.Button\n                    palette=\"auto\"\n                    variation=\"clear\"\n                >\n                    Dismiss\n                </Overlay.Button>\n            </Card.Footer>\n        </Card.Container>\n    </Overlay.Section>\n</Overlay.Container>\n\n<Overlay.Container\n    logic_id=\"overlay-once-enabled\"\n    once\n>\n    <Overlay.Backdrop />\n\n    <Overlay.Section>\n        <Card.Container\n            palette=\"inverse\"\n            max_width=\"75\"\n        >\n            <Card.Header>ONCE Overlay</Card.Header>\n\n            <Card.Footer>\n                <Overlay.Button\n                    palette=\"auto\"\n                    variation=\"clear\"\n                >\n                    Dismiss\n                </Overlay.Button>\n            </Card.Footer>\n        </Card.Container>\n    </Overlay.Section>\n</Overlay.Container>"},{"identifier":"/playground?snippet=overlay-orientation","title":"Overlay Orientation","text":"<script>\n    import {Box, Overlay} from \"@kahi-ui/framework\";\n</script>\n\n<Overlay.Container>\n    <Overlay.Section\n        orientation=\"horizontal\"\n        spacing=\"medium\"\n        padding_bottom=\"medium\"\n        padding_right=\"medium\"\n    >\n        <Box>I am the first Box!</Box>\n        <Box>And I am a sibling!</Box>\n    </Overlay.Section>\n</Overlay.Container>"},{"identifier":"/playground?snippet=overlay-preview","title":"Overlay Preview","text":"<script>\n    import {\n        Button,\n        Card,\n        Code,\n        Overlay,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Button\n    is=\"label\"\n    for=\"overlay-preview\"\n    palette=\"accent\"\n>\n    Open MODAL\n</Button>\n\n<Overlay.Container\n    logic_id=\"overlay-preview\"\n    dismissible\n>\n    <Overlay.Backdrop />\n\n    <Overlay.Section>\n        <Card.Container max_width=\"75\">\n            <Card.Header>Delete File?</Card.Header>\n\n            <Card.Section>\n                <Text>\n                    Are you sure you want to delete:\n                    <Code>important-file.docx</Code>?\n                </Text>\n            </Card.Section>\n\n            <Card.Footer>\n                <Overlay.Button\n                    palette=\"inverse\"\n                    variation=\"clear\"\n                >\n                    Cancel\n                </Overlay.Button>\n\n                <Button palette=\"negative\">\n                    Delete\n                </Button>\n            </Card.Footer>\n        </Card.Container>\n    </Overlay.Section>\n</Overlay.Container>"},{"identifier":"/playground?snippet=overlay-spacing","title":"Overlay Spacing","text":"<script>\n    import {\n        Button,\n        Code,\n        Overlay,\n        Tile,\n        Text,\n    } from \"@kahi-ui/framework\";\n    import {X} from \"lucide-svelte\";\n</script>\n\n<Overlay.Container>\n    <Overlay.Section\n        spacing=\"medium\"\n        alignment_x=\"right\"\n        alignment_y=\"bottom\"\n        padding_bottom=\"medium\"\n        padding_right=\"medium\"\n    >\n        <Tile.Container\n            elevation=\"medium\"\n            width=\"content-max\"\n            max_width=\"75\"\n        >\n            <Tile.Section>\n                <Tile.Header>File Deleted</Tile.Header>\n\n                <Text>\n                    <Code>important_file.docx</Code> was\n                    deleted from cloud storage.\n                </Text>\n            </Tile.Section>\n\n            <Tile.Footer>\n                <Button\n                    palette=\"negative\"\n                    variation=\"clear\"\n                    sizing=\"small\"\n                >\n                    <X size=\"1em\" />\n                </Button>\n            </Tile.Footer>\n        </Tile.Container>\n\n        <Tile.Container\n            elevation=\"medium\"\n            width=\"content-max\"\n            max_width=\"75\"\n        >\n            <Tile.Section>\n                <Tile.Header>File Deleted</Tile.Header>\n\n                <Text>\n                    <Code>other_file.png</Code> was deleted\n                    from cloud storage.\n                </Text>\n            </Tile.Section>\n\n            <Tile.Footer>\n                <Button\n                    palette=\"negative\"\n                    variation=\"clear\"\n                    sizing=\"small\"\n                >\n                    <X size=\"1em\" />\n                </Button>\n            </Tile.Footer>\n        </Tile.Container>\n    </Overlay.Section>\n</Overlay.Container>"},{"identifier":"/playground?snippet=overlay-state","title":"Overlay State","text":"<script>\n    import {\n        Button,\n        Card,\n        Overlay,\n    } from \"@kahi-ui/framework\";\n\n    let logic_state = false;\n</script>\n\n<Button on:click={() => (logic_state = !logic_state)}>\n    Toggle Overlay\n</Button>\n\n<Overlay.Container\n    logic_id=\"overlay-logic-state\"\n    bind:logic_state\n>\n    <Overlay.Section>\n        <Card.Container\n            palette=\"inverse\"\n            max_width=\"75\"\n        >\n            <Card.Header>TOGGABLE Overlay</Card.Header>\n\n            <Card.Footer>\n                <Overlay.Button\n                    palette=\"auto\"\n                    variation=\"clear\"\n                >\n                    Dismiss\n                </Overlay.Button>\n            </Card.Footer>\n        </Card.Container>\n    </Overlay.Section>\n</Overlay.Container>"},{"identifier":"/playground?snippet=overlay-transition","title":"Overlay Transition","text":"<script>\n    import {\n        Button,\n        Card,\n        Overlay,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Button is=\"label\" for=\"overlay-transition-clip\">\n    Open CLIP Overlay\n</Button>\n\n<Button is=\"label\" for=\"overlay-transition-fade\">\n    Open FADE Overlay\n</Button>\n\n<Button is=\"label\" for=\"overlay-transition-scale\">\n    Open SCALE Overlay\n</Button>\n\n<Button is=\"label\" for=\"overlay-transition-slide\">\n    Open SLIDE Overlay\n</Button>\n\n<Overlay.Container logic_id=\"overlay-transition-clip\">\n    <Overlay.Section animation=\"clip\">\n        <Card.Container\n            palette=\"inverse\"\n            max_width=\"75\"\n        >\n            <Card.Header>CLIP Overlay</Card.Header>\n\n            <Card.Footer>\n                <Overlay.Button\n                    palette=\"auto\"\n                    variation=\"clear\"\n                >\n                    Dismiss\n                </Overlay.Button>\n            </Card.Footer>\n        </Card.Container>\n    </Overlay.Section>\n</Overlay.Container>\n\n<Overlay.Container logic_id=\"overlay-transition-fade\">\n    <Overlay.Section animation=\"fade\">\n        <Card.Container\n            palette=\"inverse\"\n            max_width=\"75\"\n        >\n            <Card.Header>FADE Overlay</Card.Header>\n\n            <Card.Footer>\n                <Overlay.Button\n                    palette=\"auto\"\n                    variation=\"clear\"\n                >\n                    Dismiss\n                </Overlay.Button>\n            </Card.Footer>\n        </Card.Container>\n    </Overlay.Section>\n</Overlay.Container>\n\n<Overlay.Container logic_id=\"overlay-transition-scale\">\n    <Overlay.Section animation=\"scale\">\n        <Card.Container\n            palette=\"inverse\"\n            max_width=\"75\"\n        >\n            <Card.Header>SCALE Overlay</Card.Header>\n\n            <Card.Footer>\n                <Overlay.Button\n                    palette=\"auto\"\n                    variation=\"clear\"\n                >\n                    Dismiss\n                </Overlay.Button>\n            </Card.Footer>\n        </Card.Container>\n    </Overlay.Section>\n</Overlay.Container>\n\n<Overlay.Container logic_id=\"overlay-transition-slide\">\n    <Overlay.Section animation=\"slide\" direction=\"top\">\n        <Card.Container\n            palette=\"inverse\"\n            max_width=\"75\"\n        >\n            <Card.Header>SLIDE Overlay</Card.Header>\n\n            <Card.Footer>\n                <Overlay.Button\n                    palette=\"auto\"\n                    variation=\"clear\"\n                >\n                    Dismiss\n                </Overlay.Button>\n            </Card.Footer>\n        </Card.Container>\n    </Overlay.Section>\n</Overlay.Container>"},{"identifier":"/playground?snippet=overlay-transition-1","title":"Overlay Transition","text":"<script>\n    import {\n        Button,\n        Card,\n        Overlay,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Button is=\"label\" for=\"overlay-direction\">\n    Open SLIDE Overlay\n</Button>\n\n<Overlay.Container logic_id=\"overlay-direction\">\n    <Overlay.Section\n        animation=\"slide\"\n        direction=\"left\"\n    >\n        <Card.Container\n            palette=\"inverse\"\n            max_width=\"75\"\n        >\n            <Card.Header>SLIDE Overlay</Card.Header>\n\n            <Card.Footer>\n                <Overlay.Button\n                    palette=\"auto\"\n                    variation=\"clear\"\n                >\n                    Dismiss\n                </Overlay.Button>\n            </Card.Footer>\n        </Card.Container>\n    </Overlay.Section>\n</Overlay.Container>"},{"identifier":"/playground?snippet=pagination-anchors","title":"Pagination Anchors","text":"<script>\n    import {Pagination} from \"@kahi-ui/framework\";\n</script>\n\n<Pagination\n    is=\"a\"\n    href={\"/path/to/list?page=${page}\"}\n    pages={42}\n    value={24}\n    palette=\"accent\"\n/>"},{"identifier":"/playground?snippet=pagination-paging","title":"Pagination Paging","text":"<script>\n    import {Pagination} from \"@kahi-ui/framework\";\n</script>\n\n<Pagination pages={42} value={24} palette=\"accent\" />"},{"identifier":"/playground?snippet=pagination-palette","title":"Pagination Palette","text":"<script>\n    import {\n        Pagination,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container spacing=\"medium\">\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n        <Pagination pages={10} value={5} />\n    </div>\n\n    <div>\n        <Text is=\"strong\">ACCENT</Text>\n\n        <Pagination\n            pages={10}\n            value={5}\n            palette=\"accent\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">NEUTRAL</Text>\n\n        <Pagination\n            pages={10}\n            value={5}\n            palette=\"neutral\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">DARK</Text>\n\n        <Pagination\n            pages={10}\n            value={5}\n            palette=\"dark\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">LIGHT</Text>\n\n        <Pagination\n            pages={10}\n            value={5}\n            palette=\"light\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">ALERT</Text>\n\n        <Pagination\n            pages={10}\n            value={5}\n            palette=\"alert\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">AFFIRMATIVE</Text>\n\n        <Pagination\n            pages={10}\n            value={5}\n            palette=\"affirmative\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">INFORMATIVE</Text>\n\n        <Pagination\n            pages={10}\n            value={5}\n            palette=\"informative\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">NEGATIVE</Text>\n\n        <Pagination\n            pages={10}\n            value={5}\n            palette=\"negative\"\n        />\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=pagination-preview","title":"Pagination Preview","text":"<script>\n    import {Pagination} from \"@kahi-ui/framework\";\n\n    let value = 5;\n</script>\n\n<Pagination\n    pages={10}\n    palette=\"accent\"\n    {value}\n    on:select={(event) => {\n        const page = event.detail.page;\n\n        value = page;\n    }}\n/>"},{"identifier":"/playground?snippet=pagination-sizing","title":"Pagination Sizing","text":"<script>\n    import {\n        Pagination,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container spacing=\"medium\">\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n        <Pagination pages={10} value={5} />\n    </div>\n\n    <div>\n        <Text is=\"strong\">NANO</Text>\n\n        <Pagination\n            pages={10}\n            value={5}\n            sizing=\"nano\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">TINY</Text>\n\n        <Pagination\n            pages={10}\n            value={5}\n            sizing=\"tiny\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">SMALL</Text>\n\n        <Pagination\n            pages={10}\n            value={5}\n            sizing=\"small\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">MEDIUM</Text>\n\n        <Pagination\n            pages={10}\n            value={5}\n            sizing=\"medium\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">LARGE</Text>\n\n        <Pagination\n            pages={10}\n            value={5}\n            sizing=\"large\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">HUGE</Text>\n\n        <Pagination\n            pages={10}\n            value={5}\n            sizing=\"huge\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">MASSIVE</Text>\n\n        <Pagination\n            pages={10}\n            value={5}\n            sizing=\"massive\"\n        />\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=pagination-slot","title":"Pagination Slot","text":"<script>\n    import {Pagination} from \"@kahi-ui/framework\";\n</script>\n\n<Pagination pages={10} value={5} palette=\"accent\">\n    <svelte:fragment slot=\"previous\">\n        -\n    </svelte:fragment>\n\n    <svelte:fragment slot=\"next\">\n        +\n    </svelte:fragment>\n</Pagination>"},{"identifier":"/playground?snippet=pagination-steps","title":"Pagination Steps","text":"<script>\n    import {Pagination} from \"@kahi-ui/framework\";\n</script>\n\n<Pagination\n    pages={10}\n    steps={3}\n    value={5}\n    palette=\"accent\"\n/>"},{"identifier":"/playground?snippet=palettes-preview","title":"Palettes Preview","text":"<script>\n    import {Stack, Text} from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container spacing=\"medium\">\n    <div>\n        <Text is=\"strong\">ACCENT</Text>\n\n        <Stack.Container\n            orientation=\"horizontal\"\n            alignment_x=\"stretch\"\n        >\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-accent-background-lightest));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-accent-background-lighter));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-accent-background-light));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-accent-background-normal));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-accent-background-bold));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-accent-background-bolder));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-accent-background-boldest));\"\n            />\n        </Stack.Container>\n    </div>\n\n    <div>\n        <Text is=\"strong\">NEUTRAL</Text>\n\n        <Stack.Container\n            orientation=\"horizontal\"\n            alignment_x=\"stretch\"\n        >\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-neutral-background-lightest));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-neutral-background-lighter));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-neutral-background-light));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-neutral-background-normal));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-neutral-background-bold));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-neutral-background-bolder));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-neutral-background-boldest));\"\n            />\n        </Stack.Container>\n    </div>\n\n    <div>\n        <Text is=\"strong\">OFF</Text>\n\n        <Stack.Container\n            orientation=\"horizontal\"\n            alignment_x=\"stretch\"\n        >\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-off-background-lightest));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-off-background-lighter));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-off-background-light));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-off-background-normal));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-off-background-bold));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-off-background-bolder));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-off-background-boldest));\"\n            />\n        </Stack.Container>\n    </div>\n\n    <div>\n        <Text is=\"strong\">DARK</Text>\n\n        <Stack.Container\n            orientation=\"horizontal\"\n            alignment_x=\"stretch\"\n        >\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-dark-background-lightest));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-dark-background-lighter));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-dark-background-light));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-dark-background-normal));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-dark-background-bold));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-dark-background-bolder));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-dark-background-boldest));\"\n            />\n        </Stack.Container>\n    </div>\n\n    <div>\n        <Text is=\"strong\">LIGHT</Text>\n\n        <Stack.Container\n            orientation=\"horizontal\"\n            alignment_x=\"stretch\"\n        >\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-light-background-lightest));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-light-background-lighter));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-light-background-light));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-light-background-normal));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-light-background-bold));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-light-background-bolder));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-light-background-boldest));\"\n            />\n        </Stack.Container>\n    </div>\n\n    <div>\n        <Text is=\"strong\">ALERT</Text>\n\n        <Stack.Container\n            orientation=\"horizontal\"\n            alignment_x=\"stretch\"\n        >\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-alert-background-lightest));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-alert-background-lighter));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-alert-background-light));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-alert-background-normal));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-alert-background-bold));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-alert-background-bolder));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-alert-background-boldest));\"\n            />\n        </Stack.Container>\n    </div>\n\n    <div>\n        <Text is=\"strong\">AFFIRMATIVE</Text>\n\n        <Stack.Container\n            orientation=\"horizontal\"\n            alignment_x=\"stretch\"\n        >\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-affirmative-background-lightest));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-affirmative-background-lighter));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-affirmative-background-light));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-affirmative-background-normal));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-affirmative-background-bold));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-affirmative-background-bolder));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-affirmative-background-boldest));\"\n            />\n        </Stack.Container>\n    </div>\n\n    <div>\n        <Text is=\"strong\">INFORMATIVE</Text>\n\n        <Stack.Container\n            orientation=\"horizontal\"\n            alignment_x=\"stretch\"\n        >\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-informative-background-lightest));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-informative-background-lighter));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-informative-background-light));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-informative-background-normal));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-informative-background-bold));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-informative-background-bolder));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-informative-background-boldest));\"\n            />\n        </Stack.Container>\n    </div>\n\n    <div>\n        <Text is=\"strong\">NEGATIVE</Text>\n\n        <Stack.Container\n            orientation=\"horizontal\"\n            alignment_x=\"stretch\"\n        >\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-negative-background-lightest));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-negative-background-lighter));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-negative-background-light));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-negative-background-normal));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-negative-background-bold));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-negative-background-bolder));\"\n            />\n\n            <div\n                data-height=\"icon-massive\"\n                style=\"background: hsl(var(--palettes-negative-background-boldest));\"\n            />\n        </Stack.Container>\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=popover-alignment","title":"Popover Alignment","text":"<script>\n    import {\n        Box,\n        Popover,\n        Spacer,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Popover.Container\n    logic_id=\"popover-alignment-x-right\"\n    dismissible\n>\n    <Popover.Button palette=\"accent\">\n        Open RIGHT X Popover\n    </Popover.Button>\n\n    <Popover.Section\n        alignment_x=\"right\"\n        spacing=\"medium\"\n    >\n        <Box\n            palette=\"inverse\"\n            elevation=\"high\"\n            padding=\"medium\"\n            radius=\"tiny\"\n        >\n            This is a RIGHT X Popover.\n        </Box>\n    </Popover.Section>\n</Popover.Container>\n\n<Popover.Container\n    logic_id=\"popover-alignment-x-center\"\n    dismissible\n>\n    <Popover.Button palette=\"accent\">\n        Open CENTER X Popover\n    </Popover.Button>\n\n    <Popover.Section spacing=\"medium\">\n        <Box\n            palette=\"inverse\"\n            elevation=\"high\"\n            padding=\"medium\"\n            radius=\"tiny\"\n        >\n            This is a CENTER X Popover.\n        </Box>\n    </Popover.Section>\n</Popover.Container>\n\n<Popover.Container\n    logic_id=\"popover-alignment-x-left\"\n    dismissible\n>\n    <Popover.Button palette=\"accent\">\n        Open LEFT X Popover\n    </Popover.Button>\n\n    <Popover.Section\n        alignment_x=\"left\"\n        spacing=\"medium\"\n    >\n        <Box\n            palette=\"inverse\"\n            elevation=\"high\"\n            padding=\"medium\"\n            radius=\"tiny\"\n        >\n            This is a LEFT X Popover.\n        </Box>\n    </Popover.Section>\n</Popover.Container>\n\n<Spacer spacing=\"huge\" />\n\n<Popover.Container\n    logic_id=\"popover-alignment-y-top\"\n    dismissible\n>\n    <Popover.Button palette=\"accent\">\n        Open TOP Y Popover\n    </Popover.Button>\n\n    <Popover.Section\n        placement=\"right\"\n        alignment_y=\"top\"\n        spacing=\"medium\"\n    >\n        <Box\n            palette=\"inverse\"\n            elevation=\"high\"\n            padding=\"medium\"\n            radius=\"tiny\"\n        >\n            This is a TOP Y Popover.\n        </Box>\n    </Popover.Section>\n</Popover.Container>\n\n<Popover.Container\n    logic_id=\"popover-alignment-y-center\"\n    dismissible\n>\n    <Popover.Button palette=\"accent\">\n        Open CENTER Y Popover\n    </Popover.Button>\n\n    <Popover.Section\n        placement=\"right\"\n        spacing=\"medium\"\n    >\n        <Box\n            palette=\"inverse\"\n            elevation=\"high\"\n            padding=\"medium\"\n            radius=\"tiny\"\n        >\n            This is a CENTER Y Popover.\n        </Box>\n    </Popover.Section>\n</Popover.Container>\n\n<Popover.Container\n    logic_id=\"popover-alignment-y-bottom\"\n    dismissible\n>\n    <Popover.Button palette=\"accent\">\n        Open BOTTOM Y Popover\n    </Popover.Button>\n\n    <Popover.Section\n        placement=\"right\"\n        alignment_y=\"bottom\"\n        spacing=\"medium\"\n    >\n        <Box\n            palette=\"inverse\"\n            elevation=\"high\"\n            padding=\"medium\"\n            radius=\"tiny\"\n        >\n            This is a BOTTOM Y Popover.\n        </Box>\n    </Popover.Section>\n</Popover.Container>"},{"identifier":"/playground?snippet=popover-control","title":"Popover Control","text":"<script>\n    import {\n        Box,\n        Check,\n        Menu,\n        Popover,\n        Spacer,\n        TextInput,\n    } from \"@kahi-ui/framework\";\n\n    let searching = \"\";\n</script>\n\n<Popover.Container variation=\"control\">\n    <TextInput\n        placeholder=\"...filter options\"\n        bind:value={searching}\n    />\n\n    <Popover.Section\n        alignment_x=\"right\"\n        spacing=\"small\"\n    >\n        <Box\n            elevation=\"medium\"\n            padding=\"medium\"\n            variation=\"borders\"\n            radius=\"tiny\"\n        >\n            <Menu.Container sizing=\"tiny\">\n                <Menu.Heading>Filter</Menu.Heading>\n\n                <Menu.Label\n                    for=\"popover-preview-control-cpus\"\n                    hidden={searching &&\n                        !\"cpus\".includes(\n                            searching.toLowerCase()\n                        )}\n                >\n                    CPUs\n                    <Spacer />\n                    <Check\n                        value=\"cpus\"\n                        palette=\"accent\"\n                        variation=\"flush\"\n                    />\n                </Menu.Label>\n\n                <Menu.Label\n                    for=\"popover-preview-control-hard-drives\"\n                    hidden={searching &&\n                        !\"hard drives\".includes(\n                            searching.toLowerCase()\n                        )}\n                >\n                    Hard Drives\n                    <Spacer />\n                    <Check\n                        value=\"hard-drives\"\n                        palette=\"accent\"\n                        variation=\"flush\"\n                        state\n                    />\n                </Menu.Label>\n\n                <Menu.Label\n                    for=\"popover-preview-control-solid-state-drives\"\n                    hidden={searching &&\n                        !\"solid state drives\".includes(\n                            searching.toLowerCase()\n                        )}\n                >\n                    Solid State Drives\n                    <Spacer />\n                    <Check\n                        value=\"solid-state-drives\"\n                        palette=\"accent\"\n                        variation=\"flush\"\n                    />\n                </Menu.Label>\n            </Menu.Container>\n        </Box>\n    </Popover.Section>\n</Popover.Container>"},{"identifier":"/playground?snippet=popover-dismissible","title":"Popover Dismissible","text":"<script>\n    import {Box, Popover} from \"@kahi-ui/framework\";\n</script>\n\n<Popover.Container\n    logic_id=\"popover-dismissible-disabled\"\n>\n    <Popover.Button>\n        Open NON-DISMISSIBLE Popover\n    </Popover.Button>\n\n    <Popover.Section alignment_x=\"right\">\n        <Box\n            palette=\"inverse\"\n            elevation=\"high\"\n            padding=\"medium\"\n            radius=\"tiny\"\n        >\n            NON-DISMISSIBLE Popover\n        </Box>\n    </Popover.Section>\n</Popover.Container>\n\n<Popover.Container\n    logic_id=\"popover-dismissible-enabled\"\n    dismissible\n>\n    <Popover.Button>\n        Open DISMISSIBLE Popover\n    </Popover.Button>\n\n    <Popover.Section alignment_x=\"right\">\n        <Box\n            palette=\"inverse\"\n            elevation=\"high\"\n            padding=\"medium\"\n            radius=\"tiny\"\n        >\n            DISMISSIBLE Popover\n        </Box>\n    </Popover.Section>\n</Popover.Container>"},{"identifier":"/playground?snippet=popover-logic-id","title":"Popover Logic ID","text":"<script>\n    import {Box, Popover} from \"@kahi-ui/framework\";\n</script>\n\n<Popover.Container logic_id=\"popover-logic-id\">\n    <Popover.Button palette=\"accent\">\n        Open Popover\n    </Popover.Button>\n\n    <Popover.Section alignment_x=\"right\">\n        <Box\n            palette=\"inverse\"\n            elevation=\"high\"\n            padding=\"medium\"\n            radius=\"tiny\"\n        >\n            <Popover.Button\n                palette=\"auto\"\n                variation=\"clear\"\n            >\n                Dismiss\n            </Popover.Button>\n        </Box>\n    </Popover.Section>\n</Popover.Container>"},{"identifier":"/playground?snippet=popover-logic-state","title":"Popover Logic State","text":"<script>\n    import {\n        Box,\n        Button,\n        Popover,\n    } from \"@kahi-ui/framework\";\n\n    let logic_state = false;\n</script>\n\n<Popover.Container\n    logic_id=\"popover-logic-state\"\n    bind:logic_state\n>\n    <Popover.Button>\n        Open TOGGABLE Popover\n    </Popover.Button>\n\n    <Popover.Section alignment_x=\"right\">\n        <Box\n            palette=\"inverse\"\n            elevation=\"high\"\n            padding=\"medium\"\n            radius=\"tiny\"\n        >\n            TOGGABLE Popover\n            <br />\n\n            <Button\n                on:click={() =>\n                    (logic_state = !logic_state)}\n            >\n                Toggle Popover\n            </Button>\n        </Box>\n    </Popover.Section>\n</Popover.Container>"},{"identifier":"/playground?snippet=popover-once","title":"Popover Once","text":"<script>\n    import {Box, Popover} from \"@kahi-ui/framework\";\n</script>\n\n<Popover.Container logic_id=\"popover-once-disabled\">\n    <Popover.Button>\n        Open NON-ONCE Popover\n    </Popover.Button>\n\n    <Popover.Section alignment_x=\"right\">\n        <Box\n            palette=\"inverse\"\n            elevation=\"high\"\n            padding=\"medium\"\n            radius=\"tiny\"\n        >\n            NON-ONCE Popover\n        </Box>\n    </Popover.Section>\n</Popover.Container>\n\n<Popover.Container\n    logic_id=\"popover-once-enabled\"\n    once\n>\n    <Popover.Button>Open ONCE Popover</Popover.Button>\n\n    <Popover.Section alignment_x=\"right\">\n        <Box\n            palette=\"inverse\"\n            elevation=\"high\"\n            padding=\"medium\"\n            radius=\"tiny\"\n        >\n            ONCE Popover\n        </Box>\n    </Popover.Section>\n</Popover.Container>"},{"identifier":"/playground?snippet=popover-placement","title":"Popover Placement","text":"<script>\n    import {Box, Popover} from \"@kahi-ui/framework\";\n</script>\n\n<Popover.Container\n    logic_id=\"popover-placement-right\"\n    dismissible\n>\n    <Popover.Button palette=\"accent\">\n        Open RIGHT Popover\n    </Popover.Button>\n\n    <Popover.Section\n        alignment_y=\"bottom\"\n        placement=\"right\"\n        spacing=\"medium\"\n    >\n        <Box\n            palette=\"inverse\"\n            elevation=\"high\"\n            padding=\"medium\"\n            radius=\"tiny\"\n        >\n            This is a RIGHT Popover.\n        </Box>\n    </Popover.Section>\n</Popover.Container>\n\n<Popover.Container\n    logic_id=\"popover-placement-bottom\"\n    dismissible\n>\n    <Popover.Button palette=\"accent\">\n        Open BOTTOM Popover\n    </Popover.Button>\n\n    <Popover.Section\n        alignment_x=\"right\"\n        spacing=\"medium\"\n    >\n        <Box\n            palette=\"inverse\"\n            elevation=\"high\"\n            padding=\"medium\"\n            radius=\"tiny\"\n        >\n            This is a BOTTOM Popover.\n        </Box>\n    </Popover.Section>\n</Popover.Container>"},{"identifier":"/playground?snippet=popover-preview","title":"Popover Preview","text":"<script>\n    import {\n        Box,\n        Menu,\n        Popover,\n        Spacer,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Popover.Container\n    logic_id=\"popover-preview\"\n    dismissible\n>\n    <Popover.Button palette=\"accent\">\n        Open Menu\n    </Popover.Button>\n\n    <Popover.Section\n        alignment_x=\"right\"\n        spacing=\"medium\"\n    >\n        <Box\n            variation=\"borders\"\n            elevation=\"high\"\n            padding=\"medium\"\n            radius=\"tiny\"\n        >\n            <Menu.Container>\n                <Menu.Button>\n                    Copy\n                    <Spacer\n                        is=\"span\"\n                        spacing_y=\"medium\"\n                    />\n\n                    <Text is=\"small\">CTRL+C</Text>\n                </Menu.Button>\n\n                <Menu.Button>\n                    Cut\n                    <Spacer\n                        is=\"span\"\n                        spacing_y=\"medium\"\n                    />\n\n                    <Text is=\"small\">CTRL+X</Text>\n                </Menu.Button>\n\n                <Menu.Heading />\n\n                <Menu.Button>\n                    Delete\n                    <Spacer\n                        is=\"span\"\n                        spacing_y=\"medium\"\n                    />\n\n                    <Text is=\"small\">DEL</Text>\n                </Menu.Button>\n            </Menu.Container>\n        </Box>\n    </Popover.Section>\n</Popover.Container>"},{"identifier":"/playground?snippet=popover-tooltip","title":"Popover Tooltip","text":"<script>\n    import {\n        Box,\n        Button,\n        Popover,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Popover.Container variation=\"tooltip\">\n    Hover me!\n\n    <Popover.Section\n        alignment_x=\"right\"\n        spacing=\"nano\"\n        animation=\"fade\"\n    >\n        <Box\n            elevation=\"low\"\n            palette=\"neutral\"\n            padding=\"small\"\n            radius=\"nano\"\n        >\n            I contain extra information!\n        </Box>\n    </Popover.Section>\n</Popover.Container>\n\nPlus some other text...\n\n<br />\n<br />\n\n<Popover.Container variation=\"tooltip\">\n    <Button palette=\"accent\">\n        Some Undescriptive Button\n    </Button>\n\n    <Popover.Section\n        alignment_x=\"right\"\n        spacing=\"nano\"\n        animation=\"fade\"\n    >\n        <Box\n            elevation=\"low\"\n            palette=\"neutral\"\n            padding=\"small\"\n            radius=\"nano\"\n        >\n            I describe the button!\n        </Box>\n    </Popover.Section>\n</Popover.Container>"},{"identifier":"/playground?snippet=portal-loading","title":"Portal Loading","text":"<script>\n    import {Box, Portal} from \"@kahi-ui/framework\";\n\n    let container = null;\n</script>\n\n<Box\n    bind:element={container}\n    palette=\"accent\"\n    padding=\"small\"\n>\n    I am the new container element!\n</Box>\n\n<Portal target={container} loading=\"lazy\">\n    <Box padding=\"small\">And I was moved to here!</Box>\n</Portal>"},{"identifier":"/playground?snippet=portal-preview","title":"Portal Preview","text":"<script>\n    import {Box, Portal} from \"@kahi-ui/framework\";\n\n    let container = null;\n</script>\n\n<Box\n    bind:element={container}\n    palette=\"accent\"\n    padding=\"small\"\n>\n    I am the new container element!\n</Box>\n\n<Portal target={container}>\n    <Box padding=\"small\">And I was moved to here!</Box>\n</Portal>"},{"identifier":"/playground?snippet=position-action","title":"Position Action","text":"<script>\n    import {\n        Button,\n        Position,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Position\n    variation=\"action\"\n    alignment_x=\"left\"\n    alignment_y=\"top\"\n>\n    <Button palette=\"accent\">Action TOPxLEFT</Button>\n</Position>\n\n<Position variation=\"action\" alignment_y=\"top\">\n    <Button palette=\"accent\">Action TOPxRIGHT</Button>\n</Position>\n\n<Position variation=\"action\" alignment_x=\"left\">\n    <Button palette=\"accent\">\n        Action BOTTOMxLEFT\n    </Button>\n</Position>\n\n<Position variation=\"action\">\n    <Button palette=\"accent\">\n        Action BOTTOMxRIGHT DEFAULT\n    </Button>\n</Position>"},{"identifier":"/playground?snippet=position-action-container","title":"Position Action Container","text":"<script>\n    import {\n        Box,\n        Button,\n        Position,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Box palette=\"inverse\" padding=\"medium\">\n    Hello there!\n    <Position\n        variation={[\"container\", \"action\"]}\n        alignment_y=\"top\"\n    >\n        <Button palette=\"accent\">\n            Action CONTAINER RELATIVE\n        </Button>\n    </Position>\n</Box>"},{"identifier":"/playground?snippet=position-action-spacing","title":"Position Action Spacing","text":"<script>\n    import {\n        Button,\n        Position,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Position variation=\"action\" spacing=\"huge\">\n    <Button palette=\"accent\">\n        Action HUGE Spacing\n    </Button>\n</Position>"},{"identifier":"/playground?snippet=position-indicator","title":"Position Indicator","text":"<script>\n    import {\n        Badge,\n        Button,\n        Position,\n        Spacer,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Button palette=\"accent\">\n    Indicator TOPxLEFT\n    <Position variation=\"indicator\" alignment_x=\"left\">\n        <Badge\n            animation=\"pulse\"\n            palette=\"negative\"\n            shape=\"pill\"\n        >\n            +99\n        </Badge>\n    </Position>\n</Button>\n\n<Button palette=\"accent\">\n    Indicator TOPxRIGHT DEFAULT\n    <Position variation=\"indicator\">\n        <Badge\n            animation=\"pulse\"\n            palette=\"negative\"\n            shape=\"pill\"\n        >\n            +99\n        </Badge>\n    </Position>\n</Button>\n\n<Spacer spacing=\"small\" />\n\n<Button palette=\"accent\">\n    Indicator BOTTOMxLEFT\n    <Position\n        variation=\"indicator\"\n        alignment_x=\"left\"\n        alignment_y=\"bottom\"\n    >\n        <Badge\n            animation=\"pulse\"\n            palette=\"negative\"\n            shape=\"pill\"\n        >\n            +99\n        </Badge>\n    </Position>\n</Button>\n\n<Button palette=\"accent\">\n    Indicator BOTTOMxRIGHT\n    <Position\n        variation=\"indicator\"\n        alignment_y=\"bottom\"\n    >\n        <Badge\n            animation=\"pulse\"\n            palette=\"negative\"\n            shape=\"pill\"\n        >\n            +99\n        </Badge>\n    </Position>\n</Button>"},{"identifier":"/playground?snippet=position-preview","title":"Position Preview","text":"<script>\n    import {\n        Badge,\n        Button,\n        Position,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Button palette=\"accent\">\n    Open Inbox\n    <Position\n        variation=\"indicator\"\n        placement=\"top\"\n        alignment_x=\"right\"\n    >\n        <Badge\n            animation=\"pulse\"\n            palette=\"negative\"\n            shape=\"pill\"\n        >\n            +99\n        </Badge>\n    </Position>\n</Button>"},{"identifier":"/playground?snippet=position-raised","title":"Position Raised","text":"<script>\n    import {\n        Badge,\n        Position,\n        Spacer,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Text is=\"span\">\n    <Position variation=\"raised\" placement=\"top\">\n        <Badge palette=\"accent\">+99</Badge>\n    </Position>\n    TOP\n</Text>\n\n<Text is=\"span\">\n    BOTTOM\n    <Position variation=\"raised\" placement=\"bottom\">\n        <Badge palette=\"accent\">+99</Badge>\n    </Position>\n</Text>\n\n<Spacer spacing=\"medium\" />\n\n<Text is=\"span\">\n    <Position variation=\"raised\" placement=\"left\">\n        <Badge palette=\"accent\">+99</Badge>\n    </Position>\n    LEFT\n</Text>\n\n<Text is=\"span\">\n    RIGHT\n    <Position variation=\"raised\" placement=\"right\">\n        <Badge palette=\"accent\">+99</Badge>\n    </Position>\n</Text>"},{"identifier":"/playground?snippet=prefersscheme-built-in-shortcuts","title":"prefersscheme Built-In Shortcuts","text":"<script>\n    import {\n        Code,\n        Heading,\n        Text,\n        prefersdark,\n        preferslight,\n    } from \"@kahi-ui/framework\";\n\n    const darkscheme_store = prefersdark();\n    const lightscheme_store = preferslight();\n</script>\n\n<Heading>User Color Scheme Preferences</Heading>\n\n<Text>\n    Dark Scheme Preference: <Code\n        >{$darkscheme_store}</Code\n    >\n</Text>\n\n<Text>\n    Light Scheme Preference: <Code\n        >{$lightscheme_store}</Code\n    >\n</Text>"},{"identifier":"/playground?snippet=prefersscheme-preview","title":"prefersscheme Preview","text":"<script>\n    import {\n        Code,\n        Heading,\n        Text,\n        prefersscheme,\n    } from \"@kahi-ui/framework\";\n\n    const darkscheme_store = prefersscheme(\"dark\");\n    const lightscheme_store = prefersscheme(\"light\");\n</script>\n\n<Heading>User Color Scheme Preferences</Heading>\n\n<Text>\n    Dark Scheme Preference: <Code\n        >{$darkscheme_store}</Code\n    >\n</Text>\n\n<Text>\n    Light Scheme Preference: <Code\n        >{$lightscheme_store}</Code\n    >\n</Text>"},{"identifier":"/playground?snippet=progress-indeterminate","title":"Progress Indeterminate","text":"<script>\n    import {\n        Mosaic,\n        Progress,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container spacing=\"medium\" variation=\"wrap\">\n    <Stack.Container\n        orientation=\"horizontal\"\n        spacing=\"medium\"\n        variation=\"wrap\"\n    >\n        <div>\n            <Text is=\"strong\">DEFAULT</Text>\n            <br />\n\n            <Progress shape=\"circle\" />\n        </div>\n\n        <div>\n            <Text is=\"strong\">ACCENT</Text>\n            <br />\n\n            <Progress\n                shape=\"circle\"\n                palette=\"accent\"\n            />\n        </div>\n\n        <div>\n            <Text is=\"strong\">NEUTRAL</Text>\n            <br />\n\n            <Progress\n                shape=\"circle\"\n                palette=\"neutral\"\n            />\n        </div>\n\n        <div>\n            <Text is=\"strong\">DARK</Text>\n            <br />\n\n            <Progress shape=\"circle\" palette=\"dark\" />\n        </div>\n\n        <div>\n            <Text is=\"strong\">LIGHT</Text>\n            <br />\n\n            <Progress shape=\"circle\" palette=\"light\" />\n        </div>\n\n        <div>\n            <Text is=\"strong\">ALERT</Text>\n            <br />\n\n            <Progress shape=\"circle\" palette=\"alert\" />\n        </div>\n\n        <div>\n            <Text is=\"strong\">AFFIRMATIVE</Text>\n            <br />\n\n            <Progress\n                shape=\"circle\"\n                palette=\"affirmative\"\n            />\n        </div>\n\n        <div>\n            <Text is=\"strong\">INFORMATIVE</Text>\n            <br />\n\n            <Progress\n                shape=\"circle\"\n                palette=\"informative\"\n            />\n        </div>\n\n        <div>\n            <Text is=\"strong\">NEGATIVE</Text>\n            <br />\n\n            <Progress\n                shape=\"circle\"\n                palette=\"negative\"\n            />\n        </div>\n    </Stack.Container>\n\n    <Mosaic.Container sizing=\"small\" spacing=\"medium\">\n        <div>\n            <Text is=\"strong\">DEFAULT</Text>\n            <Progress />\n        </div>\n\n        <div>\n            <Text is=\"strong\">ACCENT</Text>\n            <Progress palette=\"accent\" />\n        </div>\n\n        <div>\n            <Text is=\"strong\">NEUTRAL</Text>\n            <Progress palette=\"neutral\" />\n        </div>\n\n        <div>\n            <Text is=\"strong\">DARK</Text>\n            <Progress palette=\"dark\" />\n        </div>\n\n        <div>\n            <Text is=\"strong\">LIGHT</Text>\n            <Progress palette=\"light\" />\n        </div>\n\n        <div>\n            <Text is=\"strong\">ALERT</Text>\n            <Progress palette=\"alert\" />\n        </div>\n\n        <div>\n            <Text is=\"strong\">AFFIRMATIVE</Text>\n            <Progress palette=\"affirmative\" />\n        </div>\n\n        <div>\n            <Text is=\"strong\">INFORMATIVE</Text>\n            <Progress palette=\"informative\" />\n        </div>\n\n        <div>\n            <Text is=\"strong\">NEGATIVE</Text>\n            <Progress palette=\"negative\" />\n        </div>\n    </Mosaic.Container>\n</Stack.Container>"},{"identifier":"/playground?snippet=progress-palette","title":"Progress Palette","text":"<script>\n    import {\n        Mosaic,\n        Progress,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container spacing=\"medium\" variation=\"wrap\">\n    <Stack.Container\n        orientation=\"horizontal\"\n        spacing=\"medium\"\n        variation=\"wrap\"\n    >\n        <div>\n            <Text is=\"strong\">DEFAULT</Text>\n            <br />\n\n            <Progress shape=\"circle\" value={0.5} />\n        </div>\n\n        <div>\n            <Text is=\"strong\">ACCENT</Text>\n            <br />\n\n            <Progress\n                shape=\"circle\"\n                value={0.5}\n                palette=\"accent\"\n            />\n        </div>\n\n        <div>\n            <Text is=\"strong\">NEUTRAL</Text>\n            <br />\n\n            <Progress\n                shape=\"circle\"\n                value={0.5}\n                palette=\"neutral\"\n            />\n        </div>\n\n        <div>\n            <Text is=\"strong\">DARK</Text>\n            <br />\n\n            <Progress\n                shape=\"circle\"\n                value={0.5}\n                palette=\"dark\"\n            />\n        </div>\n\n        <div>\n            <Text is=\"strong\">LIGHT</Text>\n            <br />\n\n            <Progress\n                shape=\"circle\"\n                value={0.5}\n                palette=\"light\"\n            />\n        </div>\n\n        <div>\n            <Text is=\"strong\">ALERT</Text>\n            <br />\n\n            <Progress\n                shape=\"circle\"\n                value={0.5}\n                palette=\"alert\"\n            />\n        </div>\n\n        <div>\n            <Text is=\"strong\">AFFIRMATIVE</Text>\n            <br />\n\n            <Progress\n                shape=\"circle\"\n                value={0.5}\n                palette=\"affirmative\"\n            />\n        </div>\n\n        <div>\n            <Text is=\"strong\">INFORMATIVE</Text>\n            <br />\n\n            <Progress\n                shape=\"circle\"\n                value={0.5}\n                palette=\"informative\"\n            />\n        </div>\n\n        <div>\n            <Text is=\"strong\">NEGATIVE</Text>\n            <br />\n\n            <Progress\n                shape=\"circle\"\n                value={0.5}\n                palette=\"negative\"\n            />\n        </div>\n    </Stack.Container>\n\n    <Mosaic.Container sizing=\"small\" spacing=\"medium\">\n        <div>\n            <Text is=\"strong\">DEFAULT</Text>\n            <Progress value={0.5} />\n        </div>\n\n        <div>\n            <Text is=\"strong\">ACCENT</Text>\n            <Progress value={0.5} palette=\"accent\" />\n        </div>\n\n        <div>\n            <Text is=\"strong\">NEUTRAL</Text>\n            <Progress value={0.5} palette=\"neutral\" />\n        </div>\n\n        <div>\n            <Text is=\"strong\">DARK</Text>\n            <Progress value={0.5} palette=\"dark\" />\n        </div>\n\n        <div>\n            <Text is=\"strong\">LIGHT</Text>\n            <Progress value={0.5} palette=\"light\" />\n        </div>\n\n        <div>\n            <Text is=\"strong\">ALERT</Text>\n            <Progress value={0.5} palette=\"alert\" />\n        </div>\n\n        <div>\n            <Text is=\"strong\">AFFIRMATIVE</Text>\n            <Progress\n                value={0.5}\n                palette=\"affirmative\"\n            />\n        </div>\n\n        <div>\n            <Text is=\"strong\">INFORMATIVE</Text>\n            <Progress\n                value={0.5}\n                palette=\"informative\"\n            />\n        </div>\n\n        <div>\n            <Text is=\"strong\">NEGATIVE</Text>\n            <Progress value={0.5} palette=\"negative\" />\n        </div>\n    </Mosaic.Container>\n</Stack.Container>"},{"identifier":"/playground?snippet=progress-preview","title":"Progress Preview","text":"<script>\n    import {\n        Button,\n        Progress,\n    } from \"@kahi-ui/framework\";\n\n    let value = 0.5;\n</script>\n\n<Progress shape=\"circle\" {value} />\n<Progress {value} />\n\n<Button\n    palette=\"negative\"\n    on:click={() =>\n        (value = Math.max(0, value - 0.05))}\n>\n    -0.05\n</Button>\n\n<Button\n    palette=\"affirmative\"\n    on:click={() =>\n        (value = Math.min(1, value + 0.05))}\n>\n    +0.05\n</Button>"},{"identifier":"/playground?snippet=progress-radius","title":"Progress Radius","text":"<script>\n    import {\n        Mosaic,\n        Progress,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Mosaic.Container sizing=\"small\" spacing=\"medium\">\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n        <Progress value={0.5} />\n    </div>\n\n    <div>\n        <Text is=\"strong\">NONE</Text>\n        <Progress value={0.5} radius=\"none\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">NANO</Text>\n        <Progress value={0.5} radius=\"nano\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">TINY</Text>\n        <Progress value={0.5} radius=\"tiny\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">SMALL</Text>\n        <Progress value={0.5} radius=\"small\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">MEDIUM</Text>\n        <Progress value={0.5} radius=\"medium\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">LARGE</Text>\n        <Progress value={0.5} radius=\"large\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">HUGE</Text>\n        <Progress value={0.5} radius=\"huge\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">MASSIVE</Text>\n        <Progress value={0.5} radius=\"massive\" />\n    </div>\n</Mosaic.Container>"},{"identifier":"/playground?snippet=progress-shape","title":"Progress Shape","text":"<script>\n    import {Progress} from \"@kahi-ui/framework\";\n</script>\n\n<Progress shape=\"circle\" value={0.5} />\n<Progress value={0.5} />"},{"identifier":"/playground?snippet=progress-sizing","title":"Progress Sizing","text":"<script>\n    import {\n        Mosaic,\n        Progress,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container spacing=\"medium\" variation=\"wrap\">\n    <Stack.Container\n        orientation=\"horizontal\"\n        spacing=\"medium\"\n        variation=\"wrap\"\n    >\n        <div>\n            <Text is=\"strong\">DEFAULT</Text>\n            <br />\n\n            <Progress shape=\"circle\" value={0.5} />\n        </div>\n\n        <div>\n            <Text is=\"strong\">TINY</Text>\n            <br />\n\n            <Progress\n                shape=\"circle\"\n                value={0.5}\n                sizing=\"tiny\"\n            />\n        </div>\n\n        <div>\n            <Text is=\"strong\">SMALL</Text>\n            <br />\n\n            <Progress\n                shape=\"circle\"\n                value={0.5}\n                sizing=\"small\"\n            />\n        </div>\n\n        <div>\n            <Text is=\"strong\">MEDIUM</Text>\n            <br />\n\n            <Progress\n                shape=\"circle\"\n                value={0.5}\n                sizing=\"medium\"\n            />\n        </div>\n\n        <div>\n            <Text is=\"strong\">LARGE</Text>\n            <br />\n\n            <Progress\n                shape=\"circle\"\n                value={0.5}\n                sizing=\"large\"\n            />\n        </div>\n\n        <div>\n            <Text is=\"strong\">HUGE</Text>\n            <br />\n\n            <Progress\n                shape=\"circle\"\n                value={0.5}\n                sizing=\"huge\"\n            />\n        </div>\n    </Stack.Container>\n\n    <Mosaic.Container sizing=\"small\" spacing=\"medium\">\n        <div>\n            <Text is=\"strong\">DEFAULT</Text>\n            <Progress value={0.5} />\n        </div>\n\n        <div>\n            <Text is=\"strong\">TINY</Text>\n            <Progress value={0.5} sizing=\"tiny\" />\n        </div>\n\n        <div>\n            <Text is=\"strong\">SMALL</Text>\n            <Progress value={0.5} sizing=\"small\" />\n        </div>\n\n        <div>\n            <Text is=\"strong\">MEDIUM</Text>\n            <Progress value={0.5} sizing=\"medium\" />\n        </div>\n\n        <div>\n            <Text is=\"strong\">LARGE</Text>\n            <Progress value={0.5} sizing=\"large\" />\n        </div>\n\n        <div>\n            <Text is=\"strong\">HUGE</Text>\n            <Progress value={0.5} sizing=\"huge\" />\n        </div>\n    </Mosaic.Container>\n</Stack.Container>"},{"identifier":"/playground?snippet=radio-flush","title":"Radio Flush","text":"<script>\n    import {\n        Form,\n        Menu,\n        Radio,\n        Spacer,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Menu.Container>\n    <Menu.Heading>Sort By</Menu.Heading>\n\n    <Form.Group\n        logic_name=\"radio-flush\"\n        logic_state=\"ascending\"\n    >\n        <Menu.Label for=\"radio-flush-ascending\">\n            Ascending\n            <Spacer />\n            <Radio\n                value=\"ascending\"\n                palette=\"accent\"\n                variation=\"flush\"\n            />\n        </Menu.Label>\n\n        <Menu.Label for=\"radio-flush-decending\">\n            Decending\n            <Spacer />\n            <Radio\n                value=\"decending\"\n                palette=\"accent\"\n                variation=\"flush\"\n            />\n        </Menu.Label>\n    </Form.Group>\n</Menu.Container>"},{"identifier":"/playground?snippet=radio-palette","title":"Radio Palette","text":"<script>\n    import {\n        Form,\n        Radio,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Form.Group logic_name=\"radio-palette\">\n    <Stack.Container\n        orientation=\"horizontal\"\n        spacing=\"medium\"\n        variation=\"wrap\"\n    >\n        <div>\n            <Text is=\"strong\">DEFAULT</Text>\n            <br />\n            <Radio />\n        </div>\n\n        <div>\n            <Text is=\"strong\">ACCENT</Text>\n            <br />\n            <Radio palette=\"accent\" />\n        </div>\n\n        <div>\n            <Text is=\"strong\">NEUTRAL</Text>\n            <br />\n            <Radio palette=\"neutral\" />\n        </div>\n\n        <div>\n            <Text is=\"strong\">DARK</Text>\n            <br />\n            <Radio palette=\"dark\" />\n        </div>\n\n        <div>\n            <Text is=\"strong\">LIGHT</Text>\n            <br />\n            <Radio palette=\"light\" />\n        </div>\n\n        <div>\n            <Text is=\"strong\">ALERT</Text>\n            <br />\n            <Radio palette=\"alert\" />\n        </div>\n\n        <div>\n            <Text is=\"strong\">AFFIRMATIVE</Text>\n            <br />\n            <Radio palette=\"affirmative\" />\n        </div>\n\n        <div>\n            <Text is=\"strong\">INFORMATIVE</Text>\n            <br />\n            <Radio palette=\"informative\" />\n        </div>\n\n        <div>\n            <Text is=\"strong\">NEGATIVE</Text>\n            <br />\n            <Radio palette=\"negative\" />\n        </div>\n    </Stack.Container>\n</Form.Group>"},{"identifier":"/playground?snippet=radio-preview","title":"Radio Preview","text":"<script>\n    import {\n        Form,\n        Radio,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n\n    let logic_state = \"vanilla\";\n</script>\n\n<Text is=\"strong\">\n    Select an Ice Cream Flavor\n    <Text is=\"sup\">{logic_state}</Text>\n</Text>\n\n<Stack.Container spacing=\"small\" margin_top=\"small\">\n    <Form.Group\n        logic_name=\"radio-preview\"\n        bind:logic_state\n    >\n        <Radio\n            id=\"radio-preview-bubblegum\"\n            palette=\"accent\"\n            sizing=\"tiny\"\n            value=\"bubblegum\"\n        >\n            Bubblegum\n        </Radio>\n\n        <Radio\n            id=\"radio-preview-chocolate\"\n            palette=\"accent\"\n            sizing=\"tiny\"\n            value=\"chocolate\"\n        >\n            Chocolate\n        </Radio>\n\n        <Radio\n            id=\"radio-preview-vanilla\"\n            palette=\"accent\"\n            sizing=\"tiny\"\n            value=\"vanilla\"\n        >\n            Vanilla\n        </Radio>\n    </Form.Group>\n</Stack.Container>"},{"identifier":"/playground?snippet=radio-sizing","title":"Radio Sizing","text":"<script>\n    import {\n        Form,\n        Radio,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Form.Group logic_name=\"radio-sizing\">\n    <Stack.Container\n        orientation=\"horizontal\"\n        spacing=\"medium\"\n        variation=\"wrap\"\n    >\n        <div>\n            <Text is=\"strong\">DEFAULT</Text>\n            <br />\n            <Radio />\n        </div>\n\n        <div>\n            <Text is=\"strong\">NANO</Text>\n            <br />\n            <Radio sizing=\"nano\" />\n        </div>\n\n        <div>\n            <Text is=\"strong\">TINY</Text>\n            <br />\n            <Radio sizing=\"tiny\" />\n        </div>\n\n        <div>\n            <Text is=\"strong\">SMALL</Text>\n            <br />\n            <Radio sizing=\"small\" />\n        </div>\n\n        <div>\n            <Text is=\"strong\">MEDIUM</Text>\n            <br />\n            <Radio sizing=\"medium\" />\n        </div>\n\n        <div>\n            <Text is=\"strong\">LARGE</Text>\n            <br />\n            <Radio sizing=\"large\" />\n        </div>\n\n        <div>\n            <Text is=\"strong\">HUGE</Text>\n            <br />\n            <Radio sizing=\"huge\" />\n        </div>\n\n        <div>\n            <Text is=\"strong\">MASSIVE</Text>\n            <br />\n            <Radio sizing=\"massive\" />\n        </div>\n    </Stack.Container>\n</Form.Group>"},{"identifier":"/playground?snippet=radio-states","title":"Radio States","text":"<script>\n    import {\n        Radio,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n        <br />\n        <Radio />\n    </div>\n\n    <div>\n        <Text is=\"strong\">STATE</Text>\n        <br />\n        <Radio state />\n    </div>\n\n    <div>\n        <Text is=\"strong\">ACTIVE NO-STATE</Text>\n        <br />\n        <Radio active />\n    </div>\n\n    <div>\n        <Text is=\"strong\">ACTIVE STATE</Text>\n        <br />\n        <Radio active state />\n    </div>\n\n    <div>\n        <Text is=\"strong\">DISABLED NO-STATE</Text>\n        <br />\n        <Radio disabled />\n    </div>\n\n    <div>\n        <Text is=\"strong\">DISABLED STATE</Text>\n        <br />\n        <Radio disabled state />\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=responsitivity-syntax","title":"Responsitivity Syntax","text":"<script>\n    import {Box, Grid} from \"@kahi-ui/framework\";\n</script>\n\n<Grid.Container\n    class=\"responsitivity-syntax\"\n    points={[\"5\", \"mobile:2\", \"tablet:3\", \"desktop:4\"]}\n    spacing=\"medium\"\n>\n    <Box palette=\"alert\" />\n    <Box palette=\"affirmative\" />\n    <Box palette=\"negative\" />\n\n    <Box palette=\"affirmative\" />\n    <Box palette=\"negative\" />\n    <Box palette=\"alert\" />\n\n    <Box palette=\"alert\" />\n    <Box palette=\"affirmative\" />\n    <Box palette=\"negative\" />\n\n    <Box palette=\"negative\" />\n    <Box palette=\"alert\" />\n    <Box palette=\"affirmative\" />\n\n    <Box palette=\"affirmative\" />\n    <Box palette=\"negative\" />\n    <Box palette=\"alert\" />\n\n    <Box palette=\"negative\" />\n    <Box palette=\"alert\" />\n    <Box palette=\"affirmative\" />\n\n    <Box palette=\"alert\" />\n    <Box palette=\"affirmative\" />\n    <Box palette=\"negative\" />\n</Grid.Container>\n\n<style>\n    :global(.responsitivity-syntax .box) {\n        height: 3rem;\n    }\n</style>"},{"identifier":"/playground?snippet=scrollable-preview","title":"Scrollable Preview","text":"<script>\n    import {\n        Heading,\n        Scrollable,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Scrollable class=\"scrollable-preview\">\n    <Heading>\n        Lorem ipsum dolor sit amet, consectetur\n        adipiscing elit. Proin et consectetur orci.\n        mus.\n    </Heading>\n\n    <Heading is=\"h2\">\n        Lorem ipsum dolor sit amet, consectetur\n        adipiscing elit. Proin et consectetur orci.\n        mus.\n    </Heading>\n\n    <Heading is=\"h3\">\n        Lorem ipsum dolor sit amet, consectetur\n        adipiscing elit. Proin et consectetur orci.\n        mus.\n    </Heading>\n\n    <Heading is=\"h4\">\n        Lorem ipsum dolor sit amet, consectetur\n        adipiscing elit. Proin et consectetur orci.\n        mus.\n    </Heading>\n\n    <Heading is=\"h5\">\n        Lorem ipsum dolor sit amet, consectetur\n        adipiscing elit. Proin et consectetur orci.\n        mus.\n    </Heading>\n\n    <Heading is=\"h6\">\n        Lorem ipsum dolor sit amet, consectetur\n        adipiscing elit. Proin et consectetur orci.\n        mus.\n    </Heading>\n</Scrollable>\n\n<style>\n    :global(.scrollable-preview) {\n        width: 24rem;\n        height: 10rem;\n\n        white-space: nowrap;\n    }\n</style>"},{"identifier":"/playground?snippet=scrolllock-preview","title":"scrolllock Preview","text":"<script>\n    import {\n        Box,\n        Button,\n        Heading,\n        scrolllock,\n    } from \"@kahi-ui/framework\";\n\n    const scrolllock_store = scrolllock(\n        document.querySelector(\".repl-render\")\n    );\n\n    const on_click = () =>\n        ($scrolllock_store = !$scrolllock_store);\n</script>\n\n<Button on:click={on_click}>Toggle Scroll Lock</Button>\n\n<Box palette=\"accent\" padding=\"small\">\n    <Heading>Scrollable content</Heading>\n    <Heading is=\"h2\">Scrollable content</Heading>\n    <Heading is=\"h3\">Scrollable content</Heading>\n    <Heading is=\"h4\">Scrollable content</Heading>\n</Box>\n\n<Box palette=\"affirmative\" padding=\"small\">\n    <Heading>Scrollable content</Heading>\n    <Heading is=\"h2\">Scrollable content</Heading>\n    <Heading is=\"h3\">Scrollable content</Heading>\n    <Heading is=\"h4\">Scrollable content</Heading>\n</Box>\n\n<Box palette=\"negative\" padding=\"small\">\n    <Heading>Scrollable content</Heading>\n    <Heading is=\"h2\">Scrollable content</Heading>\n    <Heading is=\"h3\">Scrollable content</Heading>\n    <Heading is=\"h4\">Scrollable content</Heading>\n</Box>\n\n<Box palette=\"alert\" padding=\"small\">\n    <Heading>Scrollable content</Heading>\n    <Heading is=\"h2\">Scrollable content</Heading>\n    <Heading is=\"h3\">Scrollable content</Heading>\n    <Heading is=\"h4\">Scrollable content</Heading>\n</Box>"},{"identifier":"/playground?snippet=serverrender-preview","title":"ServerRender Preview","text":"<script>\n    import {ServerRender} from \"@kahi-ui/framework\";\n</script>\n\n<ServerRender>\n    This only renders in a SSR environment, e.g.\n    SvelteKit\n</ServerRender>"},{"identifier":"/playground?snippet=sizes-block-sizes","title":"Sizes Block Sizes","text":"<script>\n    import {Stack, Text} from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"large\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">NANO</Text>\n\n        <div\n            data-height=\"icon-nano\"\n            style=\"background:currentColor;width:calc(var(--sizes-block-nano) * 1rem);\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">TINY</Text>\n\n        <div\n            data-height=\"icon-nano\"\n            style=\"background:currentColor;width:calc(var(--sizes-block-tiny) * 1rem);\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">SMALL</Text>\n\n        <div\n            data-height=\"icon-nano\"\n            style=\"background:currentColor;width:calc(var(--sizes-block-small) * 1rem);\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">MEDIUM</Text>\n\n        <div\n            data-height=\"icon-nano\"\n            style=\"background:currentColor;width:calc(var(--sizes-block-medium) * 1rem);\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">LARGE</Text>\n\n        <div\n            data-height=\"icon-nano\"\n            style=\"background:currentColor;width:calc(var(--sizes-block-large) * 1rem);\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">HUGE</Text>\n\n        <div\n            data-height=\"icon-nano\"\n            style=\"background:currentColor;width:calc(var(--sizes-block-huge) * 1rem);\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">MASSIVE</Text>\n\n        <div\n            data-height=\"icon-nano\"\n            style=\"background:currentColor;width:calc(var(--sizes-block-massive) * 1rem);\"\n        />\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=sizes-border-sizes","title":"Sizes Border Sizes","text":"<script>\n    import {Stack, Text} from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"large\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">NANO</Text>\n\n        <div\n            data-height=\"icon-nano\"\n            style=\"background:currentColor;width:var(--sizes-borders-nano);\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">TINY</Text>\n\n        <div\n            data-height=\"icon-nano\"\n            style=\"background:currentColor;width:var(--sizes-borders-tiny);\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">SMALL</Text>\n\n        <div\n            data-height=\"icon-nano\"\n            style=\"background:currentColor;width:var(--sizes-borders-small);\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">MEDIUM</Text>\n\n        <div\n            data-height=\"icon-nano\"\n            style=\"background:currentColor;width:var(--sizes-borders-medium);\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">LARGE</Text>\n\n        <div\n            data-height=\"icon-nano\"\n            style=\"background:currentColor;width:var(--sizes-borders-large);\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">HUGE</Text>\n\n        <div\n            data-height=\"icon-nano\"\n            style=\"background:currentColor;width:var(--sizes-borders-huge);\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">MASSIVE</Text>\n\n        <div\n            data-height=\"icon-nano\"\n            style=\"background:currentColor;width:var(--sizes-borders-massive);\"\n        />\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=sizes-height","title":"Sizes Height","text":"<script>\n    import {\n        Box,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n>\n    <div>\n        <Text is=\"strong\">auto</Text>\n        <Box palette=\"affirmative\" height=\"auto\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">content-fit</Text>\n        <Box palette=\"negative\" height=\"content-fit\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">content-max</Text>\n        <Box palette=\"alert\" height=\"content-max\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">content-min</Text>\n        <Box\n            palette=\"affirmative\"\n            height=\"content-min\"\n        >\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">prose</Text>\n        <Box palette=\"negative\" height=\"prose\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">mobile</Text>\n        <Box palette=\"alert\" width=\"mobile\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">tablet</Text>\n        <Box palette=\"affirmative\" width=\"tablet\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">desktop</Text>\n        <Box palette=\"negative\" width=\"desktop\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">widescreen</Text>\n        <Box palette=\"alert\" width=\"widescreen\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">stretch</Text>\n        <Box palette=\"alert\" height=\"stretch\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">0</Text>\n        <Box palette=\"affirmative\" height=\"0\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">25</Text>\n        <Box palette=\"negative\" height=\"25\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">33</Text>\n        <Box palette=\"alert\" height=\"33\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">50</Text>\n        <Box palette=\"affirmative\" height=\"50\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">66</Text>\n        <Box palette=\"negative\" height=\"66\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">75</Text>\n        <Box palette=\"alert\" height=\"75\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">100</Text>\n        <Box palette=\"affirmative\" height=\"100\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">viewport-0</Text>\n        <Box palette=\"affirmative\" height=\"viewport-0\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">viewport-25</Text>\n        <Box palette=\"negative\" height=\"viewport-25\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">viewport-33</Text>\n        <Box palette=\"alert\" height=\"viewport-33\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">viewport-50</Text>\n        <Box\n            palette=\"affirmative\"\n            height=\"viewport-50\"\n        >\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">viewport-66</Text>\n        <Box palette=\"negative\" height=\"viewport-66\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">viewport-75</Text>\n        <Box palette=\"alert\" height=\"viewport-75\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">viewport-100</Text>\n        <Box\n            palette=\"affirmative\"\n            height=\"viewport-100\"\n        >\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">icon-nano</Text>\n        <Box palette=\"negative\" width=\"icon-nano\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">icon-tiny</Text>\n        <Box palette=\"alert\" width=\"icon-tiny\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">icon-small</Text>\n        <Box palette=\"affirmative\" width=\"icon-small\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">icon-medium</Text>\n        <Box palette=\"negative\" width=\"icon-medium\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">icon-large</Text>\n        <Box palette=\"alert\" width=\"icon-large\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">icon-huge</Text>\n        <Box palette=\"affirmative\" width=\"icon-huge\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">icon-massive</Text>\n        <Box palette=\"negative\" width=\"icon-massive\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">nano</Text>\n        <Box palette=\"alert\" width=\"nano\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">tiny</Text>\n        <Box palette=\"affirmative\" width=\"tiny\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">small</Text>\n        <Box palette=\"negative\" width=\"small\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">medium</Text>\n        <Box palette=\"alert\" width=\"medium\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">large</Text>\n        <Box palette=\"affirmative\" width=\"large\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">huge</Text>\n        <Box palette=\"negative\" width=\"huge\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">massive</Text>\n        <Box palette=\"alert\" width=\"massive\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=sizes-icon-sizes","title":"Sizes Icon Sizes","text":"<script>\n    import {Stack, Text} from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"large\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">NANO</Text>\n\n        <div\n            style=\"background:currentColor;width:var(--sizes-icon-nano);height:var(--sizes-icon-nano);\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">TINY</Text>\n\n        <div\n            style=\"background:currentColor;width:var(--sizes-icon-tiny);height:var(--sizes-icon-tiny);\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">SMALL</Text>\n\n        <div\n            style=\"background:currentColor;width:var(--sizes-icon-small);height:var(--sizes-icon-small);\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">MEDIUM</Text>\n\n        <div\n            style=\"background:currentColor;width:var(--sizes-icon-medium);height:var(--sizes-icon-medium);\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">LARGE</Text>\n\n        <div\n            style=\"background:currentColor;width:var(--sizes-icon-large);height:var(--sizes-icon-large);\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">HUGE</Text>\n\n        <div\n            style=\"background:currentColor;width:var(--sizes-icon-huge);height:var(--sizes-icon-huge);\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">MASSIVE</Text>\n\n        <div\n            style=\"background:currentColor;width:var(--sizes-icon-massive);height:var(--sizes-icon-massive);\"\n        />\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=sizes-maximum--minimums","title":"Sizes Maximum + Minimums","text":"<script>\n    import {Box, Text} from \"@kahi-ui/framework\";\n</script>\n\n<Box\n    palette=\"affirmative\"\n    padding=\"small\"\n    style=\"width:15rem;\"\n>\n    <Box palette=\"negative\" max_width=\"25\">\n        <Text variation=\"truncate\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit.\n        </Text>\n    </Box>\n</Box>"},{"identifier":"/playground?snippet=sizes-prose-size","title":"Sizes Prose Size","text":"<p\n    style=\"border:1px solid currentColor;width:var(--sizes-prose);\"\n>\n    Lorem ipsum dolor sit amet, consectetur adipiscing\n    elit. Proin et consectetur orci. Curabitur a\n    egestas turpis, vitae convallis sapien. Sed\n    pellentesque rutrum tellus, in iaculis dolor\n    tincidunt non. Orci varius natoque penatibus et\n    magnis dis parturient montes, nascetur ridiculus\n    mus.\n</p>"},{"identifier":"/playground?snippet=sizes-size","title":"Sizes Size","text":"<script>\n    import {\n        Box,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container spacing=\"medium\">\n    <div>\n        <Text is=\"strong\">auto</Text>\n        <Box palette=\"affirmative\" size=\"auto\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">content-fit</Text>\n        <Box palette=\"negative\" size=\"content-fit\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">content-max</Text>\n        <Box palette=\"alert\" size=\"content-max\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">content-min</Text>\n        <Box palette=\"affirmative\" size=\"content-min\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">prose</Text>\n        <Box palette=\"negative\" size=\"prose\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">mobile</Text>\n        <Box palette=\"alert\" size=\"mobile\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">tablet</Text>\n        <Box palette=\"affirmative\" size=\"tablet\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">desktop</Text>\n        <Box palette=\"negative\" size=\"desktop\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">widescreen</Text>\n        <Box palette=\"alert\" size=\"widescreen\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">0</Text>\n        <Box palette=\"affirmative\" size=\"0\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">25</Text>\n        <Box palette=\"negative\" size=\"25\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">33</Text>\n        <Box palette=\"alert\" size=\"33\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">50</Text>\n        <Box palette=\"affirmative\" size=\"50\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">66</Text>\n        <Box palette=\"negative\" size=\"66\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">75</Text>\n        <Box palette=\"alert\" size=\"75\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">100</Text>\n        <Box palette=\"affirmative\" size=\"100\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">viewport-0</Text>\n        <Box palette=\"affirmative\" size=\"viewport-0\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">viewport-25</Text>\n        <Box palette=\"negative\" size=\"viewport-25\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">viewport-33</Text>\n        <Box palette=\"alert\" size=\"viewport-33\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">viewport-50</Text>\n        <Box palette=\"affirmative\" size=\"viewport-50\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">viewport-66</Text>\n        <Box palette=\"negative\" size=\"viewport-66\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">viewport-75</Text>\n        <Box palette=\"alert\" size=\"viewport-75\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">viewport-100</Text>\n        <Box palette=\"affirmative\" size=\"viewport-100\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">icon-nano</Text>\n        <Box palette=\"negative\" size=\"icon-nano\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">icon-tiny</Text>\n        <Box palette=\"alert\" size=\"icon-tiny\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">icon-small</Text>\n        <Box palette=\"affirmative\" size=\"icon-small\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">icon-medium</Text>\n        <Box palette=\"negative\" size=\"icon-medium\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">icon-large</Text>\n        <Box palette=\"alert\" size=\"icon-large\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">icon-huge</Text>\n        <Box palette=\"affirmative\" size=\"icon-huge\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">icon-massive</Text>\n        <Box palette=\"negative\" size=\"icon-massive\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">nano</Text>\n        <Box palette=\"alert\" size=\"nano\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">tiny</Text>\n        <Box palette=\"affirmative\" size=\"tiny\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">small</Text>\n        <Box palette=\"negative\" size=\"small\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">medium</Text>\n        <Box palette=\"alert\" size=\"medium\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">large</Text>\n        <Box palette=\"affirmative\" size=\"large\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">huge</Text>\n        <Box palette=\"negative\" size=\"huge\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">massive</Text>\n        <Box palette=\"alert\" size=\"massive\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=sizes-width","title":"Sizes Width","text":"<script>\n    import {\n        Box,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container spacing=\"medium\">\n    <div>\n        <Text is=\"strong\">auto</Text>\n        <Box palette=\"affirmative\" width=\"auto\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">content-fit</Text>\n        <Box palette=\"negative\" width=\"content-fit\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">content-max</Text>\n        <Box palette=\"alert\" width=\"content-max\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">content-min</Text>\n        <Box palette=\"affirmative\" width=\"content-min\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">prose</Text>\n        <Box palette=\"negative\" width=\"prose\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">mobile</Text>\n        <Box palette=\"alert\" width=\"mobile\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">tablet</Text>\n        <Box palette=\"affirmative\" width=\"tablet\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">desktop</Text>\n        <Box palette=\"negative\" width=\"desktop\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">widescreen</Text>\n        <Box palette=\"alert\" width=\"widescreen\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">0</Text>\n        <Box palette=\"affirmative\" width=\"0\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">25</Text>\n        <Box palette=\"negative\" width=\"25\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">33</Text>\n        <Box palette=\"alert\" width=\"33\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">50</Text>\n        <Box palette=\"affirmative\" width=\"50\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">66</Text>\n        <Box palette=\"negative\" width=\"66\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">75</Text>\n        <Box palette=\"alert\" width=\"75\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">100</Text>\n        <Box palette=\"affirmative\" width=\"100\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">viewport-0</Text>\n        <Box palette=\"affirmative\" width=\"viewport-0\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">viewport-25</Text>\n        <Box palette=\"negative\" width=\"viewport-25\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">viewport-33</Text>\n        <Box palette=\"alert\" width=\"viewport-33\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">viewport-50</Text>\n        <Box palette=\"affirmative\" width=\"viewport-50\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">viewport-66</Text>\n        <Box palette=\"negative\" width=\"viewport-66\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">viewport-75</Text>\n        <Box palette=\"alert\" width=\"viewport-75\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">viewport-100</Text>\n        <Box\n            palette=\"affirmative\"\n            width=\"viewport-100\"\n        >\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">icon-nano</Text>\n        <Box palette=\"negative\" width=\"icon-nano\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">icon-tiny</Text>\n        <Box palette=\"alert\" width=\"icon-tiny\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">icon-small</Text>\n        <Box palette=\"affirmative\" width=\"icon-small\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">icon-medium</Text>\n        <Box palette=\"negative\" width=\"icon-medium\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">icon-large</Text>\n        <Box palette=\"alert\" width=\"icon-large\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">icon-huge</Text>\n        <Box palette=\"affirmative\" width=\"icon-huge\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">icon-massive</Text>\n        <Box palette=\"negative\" width=\"icon-massive\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">nano</Text>\n        <Box palette=\"alert\" width=\"nano\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">tiny</Text>\n        <Box palette=\"affirmative\" width=\"tiny\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">small</Text>\n        <Box palette=\"negative\" width=\"small\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">medium</Text>\n        <Box palette=\"alert\" width=\"medium\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">large</Text>\n        <Box palette=\"affirmative\" width=\"large\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">huge</Text>\n        <Box palette=\"negative\" width=\"huge\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">massive</Text>\n        <Box palette=\"alert\" width=\"massive\">\n            <Text variation=\"truncate\">\n                Lorem ipsum dolor\n            </Text>\n        </Box>\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=spacer-inline","title":"Spacer Inline","text":"<script>\n    import {\n        Box,\n        Spacer,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">BLOCK / DIV / DEFAULT</Text>\n        <Box\n            palette=\"inverse\"\n            margin_top=\"small\"\n            padding_x=\"small\"\n            padding_y=\"tiny\"\n        >\n            TOP\n            <Spacer spacing=\"huge\" />\n            BOTTOM\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">INLINE / SPAN</Text>\n        <Box\n            palette=\"inverse\"\n            margin_top=\"small\"\n            padding_x=\"small\"\n            padding_y=\"tiny\"\n        >\n            LEFT\n            <Spacer\n                is=\"span\"\n                orientation=\"horizontal\"\n                spacing=\"huge\"\n            />\n            RIGHT\n        </Box>\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=spacer-preview","title":"Spacer Preview","text":"<script>\n    import {\n        Box,\n        Spacer,\n        Stack,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Box\n    palette=\"inverse\"\n    padding_x=\"small\"\n    padding_y=\"tiny\"\n>\n    <Stack.Container orientation=\"horizontal\">\n        LEFT\n        <Spacer />\n        RIGHT\n    </Stack.Container>\n</Box>"},{"identifier":"/playground?snippet=spacer-spacing","title":"Spacer Spacing","text":"<script>\n    import {\n        Box,\n        Spacer,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">NANO</Text>\n        <Box\n            palette=\"inverse\"\n            padding_x=\"small\"\n            padding_y=\"tiny\"\n        >\n            TOP\n            <Spacer spacing=\"nano\" />\n            BOTTOM\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">TINY</Text>\n        <Box\n            palette=\"inverse\"\n            padding_x=\"small\"\n            padding_y=\"tiny\"\n        >\n            TOP\n            <Spacer spacing=\"tiny\" />\n            BOTTOM\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">SMALL</Text>\n        <Box\n            palette=\"inverse\"\n            padding_x=\"small\"\n            padding_y=\"tiny\"\n        >\n            TOP\n            <Spacer spacing=\"small\" />\n            BOTTOM\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">MEDIUM</Text>\n        <Box\n            palette=\"inverse\"\n            padding_x=\"small\"\n            padding_y=\"tiny\"\n        >\n            TOP\n            <Spacer spacing=\"medium\" />\n            BOTTOM\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">LARGE</Text>\n        <Box\n            palette=\"inverse\"\n            padding_x=\"small\"\n            padding_y=\"tiny\"\n        >\n            TOP\n            <Spacer spacing=\"large\" />\n            BOTTOM\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">HUGE</Text>\n        <Box\n            palette=\"inverse\"\n            padding_x=\"small\"\n            padding_y=\"tiny\"\n        >\n            TOP\n            <Spacer spacing=\"huge\" />\n            BOTTOM\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">MASSIVE</Text>\n        <Box\n            palette=\"inverse\"\n            padding_x=\"small\"\n            padding_y=\"tiny\"\n        >\n            TOP\n            <Spacer spacing=\"massive\" />\n            BOTTOM\n        </Box>\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=spacings-block-spacings","title":"Spacings Block Spacings","text":"<script>\n    import {Stack, Text} from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"large\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">NANO</Text>\n\n        <div\n            data-height=\"icon-nano\"\n            style=\"background:currentColor;width:calc(var(--spacings-block-nano) * 1rem);\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">TINY</Text>\n\n        <div\n            data-height=\"icon-nano\"\n            style=\"background:currentColor;width:calc(var(--spacings-block-tiny) * 1rem);\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">SMALL</Text>\n\n        <div\n            data-height=\"icon-nano\"\n            style=\"background:currentColor;width:calc(var(--spacings-block-small) * 1rem);\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">MEDIUM</Text>\n\n        <div\n            data-height=\"icon-nano\"\n            style=\"background:currentColor;width:calc(var(--spacings-block-medium) * 1rem);\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">LARGE</Text>\n\n        <div\n            data-height=\"icon-nano\"\n            style=\"background:currentColor;width:calc(var(--spacings-block-large) * 1rem);\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">HUGE</Text>\n\n        <div\n            data-height=\"icon-nano\"\n            style=\"background:currentColor;width:calc(var(--spacings-block-huge) * 1rem);\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">MASSIVE</Text>\n\n        <div\n            data-height=\"icon-nano\"\n            style=\"background:currentColor;width:calc(var(--spacings-block-massive) * 1rem);\"\n        />\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=spacings-direction","title":"Spacings Direction","text":"<script>\n    import {Box, Code} from \"@kahi-ui/framework\";\n</script>\n\n<Box palette=\"affirmative\" padding_y=\"small\">\n    <Code>padding_y=\"small\"</Code>\n</Box>\n\n<Box palette=\"negative\" margin_top=\"large\">\n    <Code>margin_top=\"large\"</Code>\n</Box>"},{"identifier":"/playground?snippet=spacings-inline-spacings","title":"Spacings Inline Spacings","text":"<script>\n    import {Stack, Text} from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"large\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">NANO</Text>\n\n        <div\n            data-height=\"icon-nano\"\n            style=\"background:currentColor;width:calc(var(--spacings-inline-nano) * 1rem);\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">TINY</Text>\n\n        <div\n            data-height=\"icon-nano\"\n            style=\"background:currentColor;width:calc(var(--spacings-inline-tiny) * 1rem);\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">SMALL</Text>\n\n        <div\n            data-height=\"icon-nano\"\n            style=\"background:currentColor;width:calc(var(--spacings-inline-small) * 1rem);\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">MEDIUM</Text>\n\n        <div\n            data-height=\"icon-nano\"\n            style=\"background:currentColor;width:calc(var(--spacings-inline-medium) * 1rem);\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">LARGE</Text>\n\n        <div\n            data-height=\"icon-nano\"\n            style=\"background:currentColor;width:calc(var(--spacings-inline-large) * 1rem);\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">HUGE</Text>\n\n        <div\n            data-height=\"icon-nano\"\n            style=\"background:currentColor;width:calc(var(--spacings-inline-huge) * 1rem);\"\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">MASSIVE</Text>\n\n        <div\n            data-height=\"icon-nano\"\n            style=\"background:currentColor;width:calc(var(--spacings-inline-massive) * 1rem);\"\n        />\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=spacings-margin","title":"Spacings Margin","text":"<script>\n    import {\n        Box,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    alignment_y=\"top\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <Box palette=\"negative\">\n        <Box palette=\"neutral\" margin=\"none\">NONE</Box>\n    </Box>\n\n    <Box palette=\"negative\">\n        <Box palette=\"neutral\" margin=\"nano\">NANO</Box>\n    </Box>\n\n    <Box palette=\"negative\">\n        <Box palette=\"neutral\" margin=\"tiny\">TINY</Box>\n    </Box>\n\n    <Box palette=\"negative\">\n        <Box palette=\"neutral\" margin=\"small\">\n            SMALL\n        </Box>\n    </Box>\n\n    <Box palette=\"negative\">\n        <Box palette=\"neutral\" margin=\"medium\">\n            MEDIUM\n        </Box>\n    </Box>\n\n    <Box palette=\"negative\">\n        <Box palette=\"neutral\" margin=\"large\">\n            LARGE\n        </Box>\n    </Box>\n\n    <Box palette=\"negative\">\n        <Box palette=\"neutral\" margin=\"huge\">HUGE</Box>\n    </Box>\n\n    <Box palette=\"negative\">\n        <Box palette=\"neutral\" margin=\"massive\">\n            MASSIVE\n        </Box>\n    </Box>\n</Stack.Container>"},{"identifier":"/playground?snippet=spacings-padding","title":"Spacings Padding","text":"<script>\n    import {\n        Box,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    alignment_y=\"top\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <Box palette=\"informative\" padding=\"none\">\n        <Box palette=\"neutral\">NONE</Box>\n    </Box>\n\n    <Box palette=\"informative\" padding=\"nano\">\n        <Box palette=\"neutral\">NANO</Box>\n    </Box>\n\n    <Box palette=\"informative\" padding=\"tiny\">\n        <Box palette=\"neutral\">TINY</Box>\n    </Box>\n\n    <Box palette=\"informative\" padding=\"small\">\n        <Box palette=\"neutral\">SMALL</Box>\n    </Box>\n\n    <Box palette=\"informative\" padding=\"medium\">\n        <Box palette=\"neutral\">MEDIUM</Box>\n    </Box>\n\n    <Box palette=\"informative\" padding=\"large\">\n        <Box palette=\"neutral\">LARGE</Box>\n    </Box>\n\n    <Box palette=\"informative\" padding=\"huge\">\n        <Box palette=\"neutral\">HUGE</Box>\n    </Box>\n\n    <Box palette=\"informative\" padding=\"massive\">\n        <Box palette=\"neutral\">MASSIVE</Box>\n    </Box>\n</Stack.Container>"},{"identifier":"/playground?snippet=stack-alignment","title":"Stack Alignment","text":"<script>\n    import {\n        Box,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    class=\"stack-alignment\"\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n        <Box\n            palette=\"inverse\"\n            padding=\"small\"\n            width=\"content-min\"\n        >\n            <Stack.Container>\n                <Box palette=\"alert\" />\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n            </Stack.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">CENTER X/Y</Text>\n        <Box palette=\"inverse\" padding=\"small\">\n            <Stack.Container alignment=\"center\">\n                <Box palette=\"alert\" />\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n            </Stack.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">STRETCH X</Text>\n        <Box palette=\"inverse\" padding=\"small\">\n            <Stack.Container alignment_x=\"stretch\">\n                <Box palette=\"alert\" />\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n            </Stack.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">LEFT X</Text>\n        <Box palette=\"inverse\" padding=\"small\">\n            <Stack.Container alignment_x=\"left\">\n                <Box palette=\"alert\" />\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n            </Stack.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">RIGHT X</Text>\n        <Box palette=\"inverse\" padding=\"small\">\n            <Stack.Container alignment_x=\"right\">\n                <Box palette=\"alert\" />\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n            </Stack.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">TOP Y</Text>\n        <Box\n            palette=\"inverse\"\n            padding=\"small\"\n            width=\"content-min\"\n        >\n            <Stack.Container alignment_y=\"top\">\n                <Box palette=\"alert\" />\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n            </Stack.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">BOTTOM Y</Text>\n        <Box\n            palette=\"inverse\"\n            padding=\"small\"\n            width=\"content-min\"\n        >\n            <Stack.Container alignment_y=\"bottom\">\n                <Box palette=\"alert\" />\n                <Box palette=\"affirmative\" />\n                <Box palette=\"negative\" />\n            </Stack.Container>\n        </Box>\n    </div>\n</Stack.Container>\n\n<style>\n    :global(.stack-alignment .stack .box) {\n        min-width: 3rem;\n        min-height: 3rem;\n    }\n\n    :global(.stack-alignment\n            .stack[data-alignment~=\"center\"]) {\n        width: 6rem;\n        height: 12rem;\n    }\n\n    :global(.stack-alignment\n            .stack[data-alignment-x~=\"stretch\"]) {\n        width: 6rem;\n        height: 12rem;\n    }\n\n    :global(.stack-alignment\n            .stack[data-alignment-x~=\"left\"]),\n    :global(.stack-alignment\n            .stack[data-alignment-x~=\"right\"]) {\n        width: 6rem;\n    }\n\n    :global(.stack-alignment\n            .stack[data-alignment-y~=\"top\"]),\n    :global(.stack-alignment\n            .stack[data-alignment-y~=\"bottom\"]) {\n        height: 12rem;\n    }\n</style>"},{"identifier":"/playground?snippet=stack-item-stretch","title":"Stack Item Stretch","text":"<script>\n    import {Box, Stack} from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container orientation=\"horizontal\" width=\"100\">\n    <Box\n        palette=\"alert\"\n        variation=\"borders\"\n        size=\"icon-massive\"\n    />\n\n    <Stack.Item variation=\"stretch\">\n        <Box\n            palette=\"affirmative\"\n            variation=\"borders\"\n            min_width=\"icon-massive\"\n            height=\"icon-massive\"\n        />\n    </Stack.Item>\n\n    <Box\n        palette=\"negative\"\n        variation=\"borders\"\n        size=\"icon-massive\"\n    />\n</Stack.Container>"},{"identifier":"/playground?snippet=stack-orientation","title":"Stack Orientation","text":"<script>\n    import {\n        Box,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    alignment_y=\"top\"\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n        <Box\n            palette=\"inverse\"\n            padding=\"small\"\n            width=\"content-min\"\n        >\n            <Stack.Container>\n                <Box\n                    palette=\"alert\"\n                    size=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"affirmative\"\n                    size=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"negative\"\n                    size=\"icon-massive\"\n                />\n            </Stack.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">HORIZONTAL</Text>\n        <Box palette=\"inverse\" padding=\"small\">\n            <Stack.Container orientation=\"horizontal\">\n                <Box\n                    palette=\"alert\"\n                    size=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"affirmative\"\n                    size=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"negative\"\n                    size=\"icon-massive\"\n                />\n            </Stack.Container>\n        </Box>\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=stack-preview","title":"Stack Preview","text":"<script>\n    import {Box, Stack} from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container>\n    <Box palette=\"alert\" size=\"icon-massive\" />\n    <Box palette=\"affirmative\" size=\"icon-massive\" />\n    <Box palette=\"negative\" size=\"icon-massive\" />\n</Stack.Container>"},{"identifier":"/playground?snippet=stack-spacing","title":"Stack Spacing","text":"<script>\n    import {\n        Box,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n        <Box\n            palette=\"inverse\"\n            padding=\"small\"\n            width=\"content-min\"\n        >\n            <Stack.Container>\n                <Box\n                    palette=\"alert\"\n                    size=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"affirmative\"\n                    size=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"negative\"\n                    size=\"icon-massive\"\n                />\n            </Stack.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">NANO</Text>\n        <Box\n            palette=\"inverse\"\n            padding=\"small\"\n            width=\"content-min\"\n        >\n            <Stack.Container spacing=\"nano\">\n                <Box\n                    palette=\"alert\"\n                    size=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"affirmative\"\n                    size=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"negative\"\n                    size=\"icon-massive\"\n                />\n            </Stack.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">TINY</Text>\n        <Box\n            palette=\"inverse\"\n            padding=\"small\"\n            width=\"content-min\"\n        >\n            <Stack.Container spacing=\"tiny\">\n                <Box\n                    palette=\"alert\"\n                    size=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"affirmative\"\n                    size=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"negative\"\n                    size=\"icon-massive\"\n                />\n            </Stack.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">SMALL</Text>\n        <Box\n            palette=\"inverse\"\n            padding=\"small\"\n            width=\"content-min\"\n        >\n            <Stack.Container spacing=\"small\">\n                <Box\n                    palette=\"alert\"\n                    size=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"affirmative\"\n                    size=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"negative\"\n                    size=\"icon-massive\"\n                />\n            </Stack.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">MEDIUM</Text>\n        <Box\n            palette=\"inverse\"\n            padding=\"small\"\n            width=\"content-min\"\n        >\n            <Stack.Container spacing=\"medium\">\n                <Box\n                    palette=\"alert\"\n                    size=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"affirmative\"\n                    size=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"negative\"\n                    size=\"icon-massive\"\n                />\n            </Stack.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">LARGE</Text>\n        <Box\n            palette=\"inverse\"\n            padding=\"small\"\n            width=\"content-min\"\n        >\n            <Stack.Container spacing=\"large\">\n                <Box\n                    palette=\"alert\"\n                    size=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"affirmative\"\n                    size=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"negative\"\n                    size=\"icon-massive\"\n                />\n            </Stack.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">HUGE</Text>\n        <Box\n            palette=\"inverse\"\n            padding=\"small\"\n            width=\"content-min\"\n        >\n            <Stack.Container spacing=\"huge\">\n                <Box\n                    palette=\"alert\"\n                    size=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"affirmative\"\n                    size=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"negative\"\n                    size=\"icon-massive\"\n                />\n            </Stack.Container>\n        </Box>\n    </div>\n\n    <div>\n        <Text is=\"strong\">MASSIVE</Text>\n        <Box\n            palette=\"inverse\"\n            padding=\"small\"\n            width=\"content-min\"\n        >\n            <Stack.Container spacing=\"massive\">\n                <Box\n                    palette=\"alert\"\n                    size=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"affirmative\"\n                    size=\"icon-massive\"\n                />\n\n                <Box\n                    palette=\"negative\"\n                    size=\"icon-massive\"\n                />\n            </Stack.Container>\n        </Box>\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=stack-wrap","title":"Stack Wrap","text":"<script>\n    import {Box, Stack} from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"huge\"\n    variation=\"wrap\"\n>\n    <Box palette=\"alert\" size=\"icon-massive\" />\n    <Box palette=\"affirmative\" size=\"icon-massive\" />\n    <Box palette=\"negative\" size=\"icon-massive\" />\n\n    <Box palette=\"alert\" size=\"icon-massive\" />\n    <Box palette=\"affirmative\" size=\"icon-massive\" />\n    <Box palette=\"negative\" size=\"icon-massive\" />\n\n    <Box palette=\"alert\" size=\"icon-massive\" />\n</Stack.Container>"},{"identifier":"/playground?snippet=sveltekit-noscroll","title":"SvelteKit NoScroll","text":"<script>\n    import {Anchor} from \"@kahi-ui/framework\";\n</script>\n\n<Anchor\n    href=\"/docs/interactables/button\"\n    sveltekit:noscroll\n>\n    Goto Button\n</Anchor>"},{"identifier":"/playground?snippet=sveltekit-prefetch","title":"SvelteKit Prefetch","text":"<script>\n    import {Anchor} from \"@kahi-ui/framework\";\n</script>\n\n<Anchor\n    href=\"/docs/interactables/button\"\n    sveltekit:prefetch\n>\n    Goto Button\n</Anchor>"},{"identifier":"/playground?snippet=switch-palette","title":"Switch Palette","text":"<script>\n    import {\n        Switch,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n        <br />\n        <Switch />\n    </div>\n\n    <div>\n        <Text is=\"strong\">ACCENT</Text>\n        <br />\n        <Switch palette=\"accent\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">NEUTRAL</Text>\n        <br />\n        <Switch palette=\"neutral\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">DARK</Text>\n        <br />\n        <Switch palette=\"dark\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">LIGHT</Text>\n        <br />\n        <Switch palette=\"light\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">ALERT</Text>\n        <br />\n        <Switch palette=\"alert\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">AFFIRMATIVE</Text>\n        <br />\n        <Switch palette=\"affirmative\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">INFORMATIVE</Text>\n        <br />\n        <Switch palette=\"informative\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">NEGATIVE</Text>\n        <br />\n        <Switch palette=\"negative\" />\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=switch-preview","title":"Switch Preview","text":"<script>\n    import {Form, Switch} from \"@kahi-ui/framework\";\n</script>\n\n<Form.Label for=\"switch-preview\">\n    Remember Login?\n    <Switch palette=\"affirmative\" />\n</Form.Label>"},{"identifier":"/playground?snippet=switch-sizing","title":"Switch Sizing","text":"<script>\n    import {\n        Switch,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n        <br />\n        <Switch />\n    </div>\n\n    <div>\n        <Text is=\"strong\">NANO</Text>\n        <br />\n        <Switch sizing=\"nano\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">TINY</Text>\n        <br />\n        <Switch sizing=\"tiny\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">SMALL</Text>\n        <br />\n        <Switch sizing=\"small\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">MEDIUM</Text>\n        <br />\n        <Switch sizing=\"medium\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">LARGE</Text>\n        <br />\n        <Switch sizing=\"large\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">HUGE</Text>\n        <br />\n        <Switch sizing=\"huge\" />\n    </div>\n\n    <div>\n        <Text is=\"strong\">MASSIVE</Text>\n        <br />\n        <Switch sizing=\"massive\" />\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=switch-states","title":"Switch States","text":"<script>\n    import {\n        Switch,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n        <br />\n        <Switch />\n    </div>\n\n    <div>\n        <Text is=\"strong\">STATE</Text>\n        <br />\n        <Switch state />\n    </div>\n\n    <div>\n        <Text is=\"strong\">ACTIVE NO-STATE</Text>\n        <br />\n        <Switch active />\n    </div>\n\n    <div>\n        <Text is=\"strong\">ACTIVE STATE</Text>\n        <br />\n        <Switch active state />\n    </div>\n\n    <div>\n        <Text is=\"strong\">DISABLED NO-STATE</Text>\n        <br />\n        <Switch disabled />\n    </div>\n\n    <div>\n        <Text is=\"strong\">DISABLED STATE</Text>\n        <br />\n        <Switch disabled state />\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=tab-alignment","title":"Tab Alignment","text":"<script>\n    import {\n        Heading,\n        Stack,\n        Tab,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container spacing=\"medium\">\n    <div>\n        <Text is=\"strong\">LEFT</Text>\n\n        <Tab.Container\n            logic_name=\"tab-alignment-left\"\n            logic_state=\"tab-alignment-left-1\"\n        >\n            <Tab.Group logic_id=\"tab-alignment-left-1\">\n                <Tab.Label palette=\"accent\">\n                    Tab One\n                </Tab.Label>\n\n                <Tab.Section>\n                    <Heading>Tab One Content</Heading>\n                </Tab.Section>\n            </Tab.Group>\n\n            <Tab.Group logic_id=\"tab-alignment-left-2\">\n                <Tab.Label palette=\"accent\">\n                    Tab Two\n                </Tab.Label>\n\n                <Tab.Section>\n                    <Heading>Tab Two Content</Heading>\n                </Tab.Section>\n            </Tab.Group>\n\n            <Tab.Group logic_id=\"tab-alignment-left-3\">\n                <Tab.Label palette=\"accent\">\n                    Tab Three\n                </Tab.Label>\n\n                <Tab.Section>\n                    <Heading>\n                        Tab Three Content\n                    </Heading>\n                </Tab.Section>\n            </Tab.Group>\n        </Tab.Container>\n    </div>\n\n    <div>\n        <Text is=\"strong\">CENTER</Text>\n\n        <Tab.Container\n            logic_name=\"tab-alignment-center\"\n            logic_state=\"tab-alignment-center-1\"\n            alignment_x=\"center\"\n        >\n            <Tab.Group\n                logic_id=\"tab-alignment-center-1\"\n            >\n                <Tab.Label palette=\"accent\">\n                    Tab One\n                </Tab.Label>\n\n                <Tab.Section>\n                    <Heading>Tab One Content</Heading>\n                </Tab.Section>\n            </Tab.Group>\n\n            <Tab.Group\n                logic_id=\"tab-alignment-center-2\"\n            >\n                <Tab.Label palette=\"accent\">\n                    Tab Two\n                </Tab.Label>\n\n                <Tab.Section>\n                    <Heading>Tab Two Content</Heading>\n                </Tab.Section>\n            </Tab.Group>\n\n            <Tab.Group\n                logic_id=\"tab-alignment-center-3\"\n            >\n                <Tab.Label palette=\"accent\">\n                    Tab Three\n                </Tab.Label>\n\n                <Tab.Section>\n                    <Heading>\n                        Tab Three Content\n                    </Heading>\n                </Tab.Section>\n            </Tab.Group>\n        </Tab.Container>\n    </div>\n\n    <div>\n        <Text is=\"strong\">RIGHT</Text>\n\n        <Tab.Container\n            logic_name=\"tab-alignment-right\"\n            logic_state=\"tab-alignment-right-1\"\n            alignment_x=\"right\"\n        >\n            <Tab.Group\n                logic_id=\"tab-alignment-right-1\"\n            >\n                <Tab.Label palette=\"accent\">\n                    Tab One\n                </Tab.Label>\n\n                <Tab.Section>\n                    <Heading>Tab One Content</Heading>\n                </Tab.Section>\n            </Tab.Group>\n\n            <Tab.Group\n                logic_id=\"tab-alignment-right-2\"\n            >\n                <Tab.Label palette=\"accent\">\n                    Tab Two\n                </Tab.Label>\n\n                <Tab.Section>\n                    <Heading>Tab Two Content</Heading>\n                </Tab.Section>\n            </Tab.Group>\n\n            <Tab.Group\n                logic_id=\"tab-alignment-right-3\"\n            >\n                <Tab.Label palette=\"accent\">\n                    Tab Three\n                </Tab.Label>\n\n                <Tab.Section>\n                    <Heading>\n                        Tab Three Content\n                    </Heading>\n                </Tab.Section>\n            </Tab.Group>\n        </Tab.Container>\n    </div>\n\n    <div>\n        <Text is=\"strong\">STRETCH</Text>\n\n        <Tab.Container\n            logic_name=\"tab-alignment-stretch\"\n            logic_state=\"tab-alignment-stretch-1\"\n            alignment_x=\"stretch\"\n        >\n            <Tab.Group\n                logic_id=\"tab-alignment-stretch-1\"\n            >\n                <Tab.Label palette=\"accent\">\n                    Tab One\n                </Tab.Label>\n\n                <Tab.Section>\n                    <Heading>Tab One Content</Heading>\n                </Tab.Section>\n            </Tab.Group>\n\n            <Tab.Group\n                logic_id=\"tab-alignment-stretch-2\"\n            >\n                <Tab.Label palette=\"accent\">\n                    Tab Two\n                </Tab.Label>\n\n                <Tab.Section>\n                    <Heading>Tab Two Content</Heading>\n                </Tab.Section>\n            </Tab.Group>\n\n            <Tab.Group\n                logic_id=\"tab-alignment-stretch-3\"\n            >\n                <Tab.Label palette=\"accent\">\n                    Tab Three\n                </Tab.Label>\n\n                <Tab.Section>\n                    <Heading>\n                        Tab Three Content\n                    </Heading>\n                </Tab.Section>\n            </Tab.Group>\n        </Tab.Container>\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=tab-anchor","title":"Tab Anchor","text":"<script>\n    import {\n        Heading,\n        Tab,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Tab.Container alignment_x=\"stretch\">\n    <Tab.Anchor\n        current=\"page\"\n        href=\"#\"\n        palette=\"accent\"\n    >\n        Tab One\n    </Tab.Anchor>\n\n    <Tab.Section>\n        <Heading>Tab One Content</Heading>\n\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien.\n        </Text>\n    </Tab.Section>\n\n    <Tab.Anchor href=\"#\" palette=\"accent\">\n        Tab Two\n    </Tab.Anchor>\n\n    <Tab.Section>...</Tab.Section>\n\n    <Tab.Anchor href=\"#\" palette=\"accent\">\n        Tab Three\n    </Tab.Anchor>\n\n    <Tab.Section>...</Tab.Section>\n</Tab.Container>"},{"identifier":"/playground?snippet=tab-loading","title":"Tab Loading","text":"<script>\n    import {\n        Heading,\n        Tab,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Tab.Container\n    logic_name=\"tab-loading\"\n    logic_state=\"tab-lazy-1\"\n    alignment_x=\"stretch\"\n>\n    <Tab.Group logic_id=\"tab-lazy-1\">\n        <Tab.Label palette=\"accent\">Tab One</Tab.Label>\n\n        <Tab.Section loading=\"lazy\">\n            <Heading>Tab One Content</Heading>\n\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien.\n            </Text>\n        </Tab.Section>\n    </Tab.Group>\n\n    <Tab.Group logic_id=\"tab-lazy-2\">\n        <Tab.Label palette=\"accent\">Tab Two</Tab.Label>\n\n        <Tab.Section loading=\"lazy\">\n            <Heading>Tab Two Content</Heading>\n\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien.\n            </Text>\n        </Tab.Section>\n    </Tab.Group>\n\n    <Tab.Group logic_id=\"tab-lazy-3\">\n        <Tab.Label palette=\"accent\">\n            Tab Three\n        </Tab.Label>\n\n        <Tab.Section loading=\"lazy\">\n            <Heading>Tab Three Content</Heading>\n\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien.\n            </Text>\n        </Tab.Section>\n    </Tab.Group>\n</Tab.Container>"},{"identifier":"/playground?snippet=tab-logic-state","title":"Tab Logic State","text":"<script>\n    import {\n        Button,\n        Heading,\n        Tab,\n        Text,\n    } from \"@kahi-ui/framework\";\n\n    let logic_state = \"tab-logic-state-1\";\n</script>\n\n<Button\n    on:click={() =>\n        (logic_state = \"tab-logic-state-1\")}\n>\n    Select Tab One\n</Button>\n\n<Button\n    on:click={() =>\n        (logic_state = \"tab-logic-state-2\")}\n>\n    Select Tab Two\n</Button>\n\n<Button\n    on:click={() =>\n        (logic_state = \"tab-logic-state-3\")}\n>\n    Select Tab Three\n</Button>\n\n<Tab.Container\n    logic_name=\"tab-logic-state\"\n    alignment_x=\"stretch\"\n    bind:logic_state\n>\n    <Tab.Group logic_id=\"tab-logic-state-1\">\n        <Tab.Label palette=\"accent\">Tab One</Tab.Label>\n\n        <Tab.Section>\n            <Heading>Tab One Content</Heading>\n\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non. Orci varius natoque\n                penatibus et magnis dis parturient\n                montes, nascetur ridiculus mus.\n            </Text>\n        </Tab.Section>\n    </Tab.Group>\n\n    <Tab.Group logic_id=\"tab-logic-state-2\">\n        <Tab.Label palette=\"accent\">Tab Two</Tab.Label>\n\n        <Tab.Section>\n            <Heading>Tab Two Content</Heading>\n\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non. Orci varius natoque\n                penatibus et magnis dis parturient\n                montes, nascetur ridiculus mus.\n            </Text>\n        </Tab.Section>\n    </Tab.Group>\n\n    <Tab.Group logic_id=\"tab-logic-state-3\">\n        <Tab.Label palette=\"accent\">\n            Tab Three\n        </Tab.Label>\n\n        <Tab.Section>\n            <Heading>Tab Three Content</Heading>\n\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien. Sed pellentesque\n                rutrum tellus, in iaculis dolor\n                tincidunt non. Orci varius natoque\n                penatibus et magnis dis parturient\n                montes, nascetur ridiculus mus.\n            </Text>\n        </Tab.Section>\n    </Tab.Group>\n</Tab.Container>"},{"identifier":"/playground?snippet=tab-palette","title":"Tab Palette","text":"<script>\n    import {Heading, Tab} from \"@kahi-ui/framework\";\n</script>\n\n<Tab.Container\n    logic_name=\"tab-palette\"\n    logic_state=\"tab-palette-default\"\n>\n    <Tab.Group logic_id=\"tab-palette-default\">\n        <Tab.Label>Tab DEFAULT</Tab.Label>\n\n        <Tab.Section>\n            <Heading>Tab DEFAULT Content</Heading>\n        </Tab.Section>\n    </Tab.Group>\n\n    <Tab.Group logic_id=\"tab-palette-accent\">\n        <Tab.Label palette=\"accent\">\n            Tab ACCENT\n        </Tab.Label>\n\n        <Tab.Section>\n            <Heading>Tab ACCENT Content</Heading>\n        </Tab.Section>\n    </Tab.Group>\n\n    <Tab.Group logic_id=\"tab-palette-neutral\">\n        <Tab.Label palette=\"neutral\">\n            Tab NEUTRAL\n        </Tab.Label>\n\n        <Tab.Section>\n            <Heading>Tab NEUTRAL Content</Heading>\n        </Tab.Section>\n    </Tab.Group>\n\n    <Tab.Group logic_id=\"tab-palette-dark\">\n        <Tab.Label palette=\"dark\">Tab DARK</Tab.Label>\n\n        <Tab.Section>\n            <Heading>Tab DARK Content</Heading>\n        </Tab.Section>\n    </Tab.Group>\n\n    <Tab.Group logic_id=\"tab-palette-light\">\n        <Tab.Label palette=\"light\">\n            Tab LIGHT\n        </Tab.Label>\n\n        <Tab.Section>\n            <Heading>Tab LIGHT Content</Heading>\n        </Tab.Section>\n    </Tab.Group>\n\n    <Tab.Group logic_id=\"tab-palette-alert\">\n        <Tab.Label palette=\"alert\">\n            Tab ALERT\n        </Tab.Label>\n\n        <Tab.Section>\n            <Heading>Tab ALERT Content</Heading>\n        </Tab.Section>\n    </Tab.Group>\n\n    <Tab.Group logic_id=\"tab-palette-affirmative\">\n        <Tab.Label palette=\"affirmative\">\n            Tab AFFIRMATIVE\n        </Tab.Label>\n\n        <Tab.Section>\n            <Heading>Tab AFFIRMATIVE Content</Heading>\n        </Tab.Section>\n    </Tab.Group>\n\n    <Tab.Group logic_id=\"tab-palette-informative\">\n        <Tab.Label palette=\"informative\">\n            Tab INFORMATIVE\n        </Tab.Label>\n\n        <Tab.Section>\n            <Heading>Tab INFORMATIVE Content</Heading>\n        </Tab.Section>\n    </Tab.Group>\n\n    <Tab.Group logic_id=\"tab-palette-negative\">\n        <Tab.Label palette=\"negative\">\n            Tab NEGATIVE\n        </Tab.Label>\n\n        <Tab.Section>\n            <Heading>Tab NEGATIVE Content</Heading>\n        </Tab.Section>\n    </Tab.Group>\n</Tab.Container>"},{"identifier":"/playground?snippet=tab-preview","title":"Tab Preview","text":"<script>\n    import {\n        Heading,\n        Tab,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Tab.Container\n    logic_name=\"tab-preview\"\n    logic_state=\"tab-preview-1\"\n    alignment_x=\"stretch\"\n>\n    <Tab.Group logic_id=\"tab-preview-1\">\n        <Tab.Label palette=\"accent\">Tab One</Tab.Label>\n\n        <Tab.Section>\n            <Heading>Tab One Content</Heading>\n\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien.\n            </Text>\n        </Tab.Section>\n    </Tab.Group>\n\n    <Tab.Group logic_id=\"tab-preview-2\">\n        <Tab.Label palette=\"accent\">Tab Two</Tab.Label>\n\n        <Tab.Section>\n            <Heading>Tab Two Content</Heading>\n\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien.\n            </Text>\n        </Tab.Section>\n    </Tab.Group>\n\n    <Tab.Group logic_id=\"tab-preview-3\">\n        <Tab.Label palette=\"accent\">\n            Tab Three\n        </Tab.Label>\n\n        <Tab.Section>\n            <Heading>Tab Three Content</Heading>\n\n            <Text>\n                Lorem ipsum dolor sit amet, consectetur\n                adipiscing elit. Proin et consectetur\n                orci. Curabitur a egestas turpis, vitae\n                convallis sapien.\n            </Text>\n        </Tab.Section>\n    </Tab.Group>\n</Tab.Container>"},{"identifier":"/playground?snippet=tab-sizing","title":"Tab Sizing","text":"<script>\n    import {\n        Heading,\n        Stack,\n        Tab,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container spacing=\"medium\">\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n\n        <Tab.Container\n            logic_name=\"tab-sizing-default\"\n            logic_state=\"tab-sizing-default-1\"\n        >\n            <Tab.Group logic_id=\"tab-sizing-default-1\">\n                <Tab.Label palette=\"accent\">\n                    Tab One\n                </Tab.Label>\n\n                <Tab.Section>\n                    <Heading>Tab One Content</Heading>\n                </Tab.Section>\n            </Tab.Group>\n\n            <Tab.Group logic_id=\"tab-sizing-default-2\">\n                <Tab.Label palette=\"accent\">\n                    Tab Two\n                </Tab.Label>\n\n                <Tab.Section>\n                    <Heading>Tab Two Content</Heading>\n                </Tab.Section>\n            </Tab.Group>\n\n            <Tab.Group logic_id=\"tab-sizing-default-3\">\n                <Tab.Label palette=\"accent\">\n                    Tab Three\n                </Tab.Label>\n\n                <Tab.Section>\n                    <Heading>\n                        Tab Three Content\n                    </Heading>\n                </Tab.Section>\n            </Tab.Group>\n        </Tab.Container>\n    </div>\n\n    <div>\n        <Text is=\"strong\">NANO</Text>\n\n        <Tab.Container\n            logic_name=\"tab-sizing-nano\"\n            logic_state=\"tab-sizing-nano-1\"\n            sizing=\"nano\"\n        >\n            <Tab.Group logic_id=\"tab-sizing-nano-1\">\n                <Tab.Label palette=\"accent\">\n                    Tab One\n                </Tab.Label>\n\n                <Tab.Section>\n                    <Heading>Tab One Content</Heading>\n                </Tab.Section>\n            </Tab.Group>\n\n            <Tab.Group logic_id=\"tab-sizing-nano-2\">\n                <Tab.Label palette=\"accent\">\n                    Tab Two\n                </Tab.Label>\n\n                <Tab.Section>\n                    <Heading>Tab Two Content</Heading>\n                </Tab.Section>\n            </Tab.Group>\n\n            <Tab.Group logic_id=\"tab-sizing-nano-3\">\n                <Tab.Label palette=\"accent\">\n                    Tab Three\n                </Tab.Label>\n\n                <Tab.Section>\n                    <Heading>\n                        Tab Three Content\n                    </Heading>\n                </Tab.Section>\n            </Tab.Group>\n        </Tab.Container>\n    </div>\n\n    <div>\n        <Text is=\"strong\">TINY</Text>\n\n        <Tab.Container\n            logic_name=\"tab-sizing-tiny\"\n            logic_state=\"tab-sizing-tiny-1\"\n            sizing=\"tiny\"\n        >\n            <Tab.Group logic_id=\"tab-sizing-tiny-1\">\n                <Tab.Label palette=\"accent\">\n                    Tab One\n                </Tab.Label>\n\n                <Tab.Section>\n                    <Heading>Tab One Content</Heading>\n                </Tab.Section>\n            </Tab.Group>\n\n            <Tab.Group logic_id=\"tab-sizing-tiny-2\">\n                <Tab.Label palette=\"accent\">\n                    Tab Two\n                </Tab.Label>\n\n                <Tab.Section>\n                    <Heading>Tab Two Content</Heading>\n                </Tab.Section>\n            </Tab.Group>\n\n            <Tab.Group logic_id=\"tab-sizing-tiny-3\">\n                <Tab.Label palette=\"accent\">\n                    Tab Three\n                </Tab.Label>\n\n                <Tab.Section>\n                    <Heading>\n                        Tab Three Content\n                    </Heading>\n                </Tab.Section>\n            </Tab.Group>\n        </Tab.Container>\n    </div>\n\n    <div>\n        <Text is=\"strong\">SMALL</Text>\n\n        <Tab.Container\n            logic_name=\"tab-sizing-small\"\n            logic_state=\"tab-sizing-small-1\"\n            sizing=\"small\"\n        >\n            <Tab.Group logic_id=\"tab-sizing-small-1\">\n                <Tab.Label palette=\"accent\">\n                    Tab One\n                </Tab.Label>\n\n                <Tab.Section>\n                    <Heading>Tab One Content</Heading>\n                </Tab.Section>\n            </Tab.Group>\n\n            <Tab.Group logic_id=\"tab-sizing-small-2\">\n                <Tab.Label palette=\"accent\">\n                    Tab Two\n                </Tab.Label>\n\n                <Tab.Section>\n                    <Heading>Tab Two Content</Heading>\n                </Tab.Section>\n            </Tab.Group>\n\n            <Tab.Group logic_id=\"tab-sizing-small-3\">\n                <Tab.Label palette=\"accent\">\n                    Tab Three\n                </Tab.Label>\n\n                <Tab.Section>\n                    <Heading>\n                        Tab Three Content\n                    </Heading>\n                </Tab.Section>\n            </Tab.Group>\n        </Tab.Container>\n    </div>\n\n    <div>\n        <Text is=\"strong\">MEDIUM</Text>\n\n        <Tab.Container\n            logic_name=\"tab-sizing-medium\"\n            logic_state=\"tab-sizing-medium-1\"\n            sizing=\"medium\"\n        >\n            <Tab.Group logic_id=\"tab-sizing-medium-1\">\n                <Tab.Label palette=\"accent\">\n                    Tab One\n                </Tab.Label>\n\n                <Tab.Section>\n                    <Heading>Tab One Content</Heading>\n                </Tab.Section>\n            </Tab.Group>\n\n            <Tab.Group logic_id=\"tab-sizing-medium-2\">\n                <Tab.Label palette=\"accent\">\n                    Tab Two\n                </Tab.Label>\n\n                <Tab.Section>\n                    <Heading>Tab Two Content</Heading>\n                </Tab.Section>\n            </Tab.Group>\n\n            <Tab.Group logic_id=\"tab-sizing-medium-3\">\n                <Tab.Label palette=\"accent\">\n                    Tab Three\n                </Tab.Label>\n\n                <Tab.Section>\n                    <Heading>\n                        Tab Three Content\n                    </Heading>\n                </Tab.Section>\n            </Tab.Group>\n        </Tab.Container>\n    </div>\n\n    <div>\n        <Text is=\"strong\">LARGE</Text>\n\n        <Tab.Container\n            logic_name=\"tab-sizing-large\"\n            logic_state=\"tab-sizing-large-1\"\n            sizing=\"large\"\n        >\n            <Tab.Group logic_id=\"tab-sizing-large-1\">\n                <Tab.Label palette=\"accent\">\n                    Tab One\n                </Tab.Label>\n\n                <Tab.Section>\n                    <Heading>Tab One Content</Heading>\n                </Tab.Section>\n            </Tab.Group>\n\n            <Tab.Group logic_id=\"tab-sizing-large-2\">\n                <Tab.Label palette=\"accent\">\n                    Tab Two\n                </Tab.Label>\n\n                <Tab.Section>\n                    <Heading>Tab Two Content</Heading>\n                </Tab.Section>\n            </Tab.Group>\n\n            <Tab.Group logic_id=\"tab-sizing-large-3\">\n                <Tab.Label palette=\"accent\">\n                    Tab Three\n                </Tab.Label>\n\n                <Tab.Section>\n                    <Heading>\n                        Tab Three Content\n                    </Heading>\n                </Tab.Section>\n            </Tab.Group>\n        </Tab.Container>\n    </div>\n\n    <div>\n        <Text is=\"strong\">HUGE</Text>\n\n        <Tab.Container\n            logic_name=\"tab-sizing-huge\"\n            logic_state=\"tab-sizing-huge-1\"\n            sizing=\"huge\"\n        >\n            <Tab.Group logic_id=\"tab-sizing-huge-1\">\n                <Tab.Label palette=\"accent\">\n                    Tab One\n                </Tab.Label>\n\n                <Tab.Section>\n                    <Heading>Tab One Content</Heading>\n                </Tab.Section>\n            </Tab.Group>\n\n            <Tab.Group logic_id=\"tab-sizing-huge-2\">\n                <Tab.Label palette=\"accent\">\n                    Tab Two\n                </Tab.Label>\n\n                <Tab.Section>\n                    <Heading>Tab Two Content</Heading>\n                </Tab.Section>\n            </Tab.Group>\n\n            <Tab.Group logic_id=\"tab-sizing-huge-3\">\n                <Tab.Label palette=\"accent\">\n                    Tab Three\n                </Tab.Label>\n\n                <Tab.Section>\n                    <Heading>\n                        Tab Three Content\n                    </Heading>\n                </Tab.Section>\n            </Tab.Group>\n        </Tab.Container>\n    </div>\n\n    <div>\n        <Text is=\"strong\">MASSIVE</Text>\n\n        <Tab.Container\n            logic_name=\"tab-sizing-massive\"\n            logic_state=\"tab-sizing-massive-1\"\n            sizing=\"massive\"\n        >\n            <Tab.Group logic_id=\"tab-sizing-massive-1\">\n                <Tab.Label palette=\"accent\">\n                    Tab One\n                </Tab.Label>\n\n                <Tab.Section>\n                    <Heading>Tab One Content</Heading>\n                </Tab.Section>\n            </Tab.Group>\n\n            <Tab.Group logic_id=\"tab-sizing-massive-2\">\n                <Tab.Label palette=\"accent\">\n                    Tab Two\n                </Tab.Label>\n\n                <Tab.Section>\n                    <Heading>Tab Two Content</Heading>\n                </Tab.Section>\n            </Tab.Group>\n\n            <Tab.Group logic_id=\"tab-sizing-massive-3\">\n                <Tab.Label palette=\"accent\">\n                    Tab Three\n                </Tab.Label>\n\n                <Tab.Section>\n                    <Heading>\n                        Tab Three Content\n                    </Heading>\n                </Tab.Section>\n            </Tab.Group>\n        </Tab.Container>\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=tab-transitions","title":"Tab Transitions","text":"<script>\n    import {\n        Heading,\n        Tab,\n        Text,\n        Transition,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Tab.Container\n    logic_name=\"tab-transition\"\n    logic_state=\"tab-transition-1\"\n    alignment_x=\"stretch\"\n>\n    <Tab.Group logic_id=\"tab-transition-1\">\n        <Tab.Label palette=\"accent\">Tab One</Tab.Label>\n\n        <Tab.Section>\n            <Transition\n                animation=\"fade\"\n                variation=\"enter\"\n            >\n                <Heading>Tab One Content</Heading>\n\n                <Text>\n                    Lorem ipsum dolor sit amet,\n                    consectetur adipiscing elit. Proin\n                    et consectetur orci. Curabitur a\n                    egestas turpis, vitae convallis\n                    sapien.\n                </Text>\n            </Transition>\n        </Tab.Section>\n    </Tab.Group>\n\n    <Tab.Group logic_id=\"tab-transition-2\">\n        <Tab.Label palette=\"accent\">Tab Two</Tab.Label>\n\n        <Tab.Section>\n            <Transition\n                animation=\"fade\"\n                variation=\"enter\"\n            >\n                <Heading>Tab Two Content</Heading>\n\n                <Text>\n                    Lorem ipsum dolor sit amet,\n                    consectetur adipiscing elit. Proin\n                    et consectetur orci. Curabitur a\n                    egestas turpis, vitae convallis\n                    sapien.\n                </Text>\n            </Transition>\n        </Tab.Section>\n    </Tab.Group>\n\n    <Tab.Group logic_id=\"tab-transition-3\">\n        <Tab.Label palette=\"accent\">\n            Tab Three\n        </Tab.Label>\n\n        <Tab.Section>\n            <Transition\n                animation=\"fade\"\n                variation=\"enter\"\n            >\n                <Heading>Tab Three Content</Heading>\n\n                <Text>\n                    Lorem ipsum dolor sit amet,\n                    consectetur adipiscing elit. Proin\n                    et consectetur orci. Curabitur a\n                    egestas turpis, vitae convallis\n                    sapien.\n                </Text>\n            </Transition>\n        </Tab.Section>\n    </Tab.Group>\n</Tab.Container>"},{"identifier":"/playground?snippet=table-borders","title":"Table Borders","text":"<script>\n    import {\n        Code,\n        Table,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Table.Container variation=\"borders\">\n    <Table.Header>\n        <Table.Row>\n            <Table.Heading />\n            <Table.Heading>Minimum</Table.Heading>\n            <Table.Heading>Maximum</Table.Heading>\n        </Table.Row>\n    </Table.Header>\n\n    <Table.Section>\n        <Table.Row>\n            <Table.Column>\n                <Text is=\"strong\">mobile</Text>\n            </Table.Column>\n\n            <Table.Column>\n                <Code>0px</Code>\n            </Table.Column>\n\n            <Table.Column>\n                <Code>640px</Code>\n            </Table.Column>\n        </Table.Row>\n\n        <Table.Row>\n            <Table.Column>\n                <Text is=\"strong\">tablet</Text>\n            </Table.Column>\n\n            <Table.Column>\n                <Code>641px</Code>\n            </Table.Column>\n\n            <Table.Column>\n                <Code>768px</Code>\n            </Table.Column>\n        </Table.Row>\n\n        <Table.Row>\n            <Table.Column>\n                <Text is=\"strong\">desktop</Text>\n            </Table.Column>\n\n            <Table.Column>\n                <Code>769px</Code>\n            </Table.Column>\n\n            <Table.Column>\n                <Code>1024px</Code>\n            </Table.Column>\n        </Table.Row>\n\n        <Table.Row>\n            <Table.Column>\n                <Text is=\"strong\">widescreen</Text>\n            </Table.Column>\n\n            <Table.Column>\n                <Code>1025px</Code>\n            </Table.Column>\n\n            <Table.Column>\n                <Code>∞</Code>\n            </Table.Column>\n        </Table.Row>\n    </Table.Section>\n\n    <Table.Footer>\n        <Table.Row>\n            <Table.Heading />\n            <Table.Heading>Minimum</Table.Heading>\n            <Table.Heading>Maximum</Table.Heading>\n        </Table.Row>\n    </Table.Footer>\n</Table.Container>"},{"identifier":"/playground?snippet=table-borders--stripes","title":"Table Borders + Stripes","text":"<script>\n    import {\n        Code,\n        Table,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Table.Container variation={[\"borders\", \"stripes\"]}>\n    <Table.Header>\n        <Table.Row>\n            <Table.Heading />\n            <Table.Heading>Minimum</Table.Heading>\n            <Table.Heading>Maximum</Table.Heading>\n        </Table.Row>\n    </Table.Header>\n\n    <Table.Section>\n        <Table.Row>\n            <Table.Column>\n                <Text is=\"strong\">mobile</Text>\n            </Table.Column>\n\n            <Table.Column>\n                <Code>0px</Code>\n            </Table.Column>\n\n            <Table.Column>\n                <Code>640px</Code>\n            </Table.Column>\n        </Table.Row>\n\n        <Table.Row>\n            <Table.Column>\n                <Text is=\"strong\">tablet</Text>\n            </Table.Column>\n\n            <Table.Column>\n                <Code>641px</Code>\n            </Table.Column>\n\n            <Table.Column>\n                <Code>768px</Code>\n            </Table.Column>\n        </Table.Row>\n\n        <Table.Row>\n            <Table.Column>\n                <Text is=\"strong\">desktop</Text>\n            </Table.Column>\n\n            <Table.Column>\n                <Code>769px</Code>\n            </Table.Column>\n\n            <Table.Column>\n                <Code>1024px</Code>\n            </Table.Column>\n        </Table.Row>\n\n        <Table.Row>\n            <Table.Column>\n                <Text is=\"strong\">widescreen</Text>\n            </Table.Column>\n\n            <Table.Column>\n                <Code>1025px</Code>\n            </Table.Column>\n\n            <Table.Column>\n                <Code>∞</Code>\n            </Table.Column>\n        </Table.Row>\n    </Table.Section>\n\n    <Table.Footer>\n        <Table.Row>\n            <Table.Heading />\n            <Table.Heading>Minimum</Table.Heading>\n            <Table.Heading>Maximum</Table.Heading>\n        </Table.Row>\n    </Table.Footer>\n</Table.Container>"},{"identifier":"/playground?snippet=table-preview","title":"Table Preview","text":"<script>\n    import {\n        Code,\n        Table,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Table.Container>\n    <Table.Header>\n        <Table.Row>\n            <Table.Heading />\n            <Table.Heading>Minimum</Table.Heading>\n            <Table.Heading>Maximum</Table.Heading>\n        </Table.Row>\n    </Table.Header>\n\n    <Table.Section>\n        <Table.Row>\n            <Table.Column>\n                <Text is=\"strong\">mobile</Text>\n            </Table.Column>\n\n            <Table.Column>\n                <Code>0px</Code>\n            </Table.Column>\n\n            <Table.Column>\n                <Code>640px</Code>\n            </Table.Column>\n        </Table.Row>\n\n        <Table.Row>\n            <Table.Column>\n                <Text is=\"strong\">tablet</Text>\n            </Table.Column>\n\n            <Table.Column>\n                <Code>641px</Code>\n            </Table.Column>\n\n            <Table.Column>\n                <Code>768px</Code>\n            </Table.Column>\n        </Table.Row>\n\n        <Table.Row>\n            <Table.Column>\n                <Text is=\"strong\">desktop</Text>\n            </Table.Column>\n\n            <Table.Column>\n                <Code>769px</Code>\n            </Table.Column>\n\n            <Table.Column>\n                <Code>1024px</Code>\n            </Table.Column>\n        </Table.Row>\n\n        <Table.Row>\n            <Table.Column>\n                <Text is=\"strong\">widescreen</Text>\n            </Table.Column>\n\n            <Table.Column>\n                <Code>1025px</Code>\n            </Table.Column>\n\n            <Table.Column>\n                <Code>∞</Code>\n            </Table.Column>\n        </Table.Row>\n    </Table.Section>\n\n    <Table.Footer>\n        <Table.Row>\n            <Table.Heading />\n            <Table.Heading>Minimum</Table.Heading>\n            <Table.Heading>Maximum</Table.Heading>\n        </Table.Row>\n    </Table.Footer>\n</Table.Container>"},{"identifier":"/playground?snippet=table-scrollable","title":"Table Scrollable","text":"<script>\n    import {\n        Code,\n        Scrollable,\n        Table,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Scrollable width=\"medium\">\n    <Table.Container>\n        <Table.Header>\n            <Table.Row>\n                <Table.Heading />\n                <Table.Heading>Minimum</Table.Heading>\n                <Table.Heading>Maximum</Table.Heading>\n            </Table.Row>\n        </Table.Header>\n\n        <Table.Section>\n            <Table.Row>\n                <Table.Column>\n                    <Text is=\"strong\">mobile</Text>\n                </Table.Column>\n\n                <Table.Column>\n                    <Code>0px</Code>\n                </Table.Column>\n\n                <Table.Column>\n                    <Code>640px</Code>\n                </Table.Column>\n            </Table.Row>\n\n            <Table.Row>\n                <Table.Column>\n                    <Text is=\"strong\">tablet</Text>\n                </Table.Column>\n\n                <Table.Column>\n                    <Code>641px</Code>\n                </Table.Column>\n\n                <Table.Column>\n                    <Code>768px</Code>\n                </Table.Column>\n            </Table.Row>\n\n            <Table.Row>\n                <Table.Column>\n                    <Text is=\"strong\">desktop</Text>\n                </Table.Column>\n\n                <Table.Column>\n                    <Code>769px</Code>\n                </Table.Column>\n\n                <Table.Column>\n                    <Code>1024px</Code>\n                </Table.Column>\n            </Table.Row>\n\n            <Table.Row>\n                <Table.Column>\n                    <Text is=\"strong\">widescreen</Text>\n                </Table.Column>\n\n                <Table.Column>\n                    <Code>1025px</Code>\n                </Table.Column>\n\n                <Table.Column>\n                    <Code>∞</Code>\n                </Table.Column>\n            </Table.Row>\n        </Table.Section>\n\n        <Table.Footer>\n            <Table.Row>\n                <Table.Heading />\n                <Table.Heading>Minimum</Table.Heading>\n                <Table.Heading>Maximum</Table.Heading>\n            </Table.Row>\n        </Table.Footer>\n    </Table.Container>\n</Scrollable>"},{"identifier":"/playground?snippet=table-sizing","title":"Table Sizing","text":"<script>\n    import {\n        Code,\n        Stack,\n        Table,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container spacing=\"medium\">\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n\n        <Table.Container variation=\"borders\">\n            <Table.Header>\n                <Table.Row>\n                    <Table.Heading />\n                    <Table.Heading>\n                        Minimum\n                    </Table.Heading>\n\n                    <Table.Heading>\n                        Maximum\n                    </Table.Heading>\n                </Table.Row>\n            </Table.Header>\n\n            <Table.Section>\n                <Table.Row>\n                    <Table.Column>\n                        <Text is=\"strong\">mobile</Text>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>0px</Code>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>640px</Code>\n                    </Table.Column>\n                </Table.Row>\n\n                <Table.Row>\n                    <Table.Column>\n                        <Text is=\"strong\">tablet</Text>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>641px</Code>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>768px</Code>\n                    </Table.Column>\n                </Table.Row>\n\n                <Table.Row>\n                    <Table.Column>\n                        <Text is=\"strong\">\n                            desktop\n                        </Text>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>769px</Code>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>1024px</Code>\n                    </Table.Column>\n                </Table.Row>\n\n                <Table.Row>\n                    <Table.Column>\n                        <Text is=\"strong\">\n                            widescreen\n                        </Text>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>1025px</Code>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>∞</Code>\n                    </Table.Column>\n                </Table.Row>\n            </Table.Section>\n\n            <Table.Footer>\n                <Table.Row>\n                    <Table.Heading />\n                    <Table.Heading>\n                        Minimum\n                    </Table.Heading>\n\n                    <Table.Heading>\n                        Maximum\n                    </Table.Heading>\n                </Table.Row>\n            </Table.Footer>\n        </Table.Container>\n    </div>\n\n    <div>\n        <Text is=\"strong\">NANO</Text>\n\n        <Table.Container\n            variation=\"borders\"\n            sizing=\"nano\"\n        >\n            <Table.Header>\n                <Table.Row>\n                    <Table.Heading />\n                    <Table.Heading>\n                        Minimum\n                    </Table.Heading>\n\n                    <Table.Heading>\n                        Maximum\n                    </Table.Heading>\n                </Table.Row>\n            </Table.Header>\n\n            <Table.Section>\n                <Table.Row>\n                    <Table.Column>\n                        <Text is=\"strong\">mobile</Text>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>0px</Code>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>640px</Code>\n                    </Table.Column>\n                </Table.Row>\n\n                <Table.Row>\n                    <Table.Column>\n                        <Text is=\"strong\">tablet</Text>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>641px</Code>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>768px</Code>\n                    </Table.Column>\n                </Table.Row>\n\n                <Table.Row>\n                    <Table.Column>\n                        <Text is=\"strong\">\n                            desktop\n                        </Text>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>769px</Code>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>1024px</Code>\n                    </Table.Column>\n                </Table.Row>\n\n                <Table.Row>\n                    <Table.Column>\n                        <Text is=\"strong\">\n                            widescreen\n                        </Text>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>1025px</Code>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>∞</Code>\n                    </Table.Column>\n                </Table.Row>\n            </Table.Section>\n\n            <Table.Footer>\n                <Table.Row>\n                    <Table.Heading />\n                    <Table.Heading>\n                        Minimum\n                    </Table.Heading>\n\n                    <Table.Heading>\n                        Maximum\n                    </Table.Heading>\n                </Table.Row>\n            </Table.Footer>\n        </Table.Container>\n    </div>\n\n    <div>\n        <Text is=\"strong\">TINY</Text>\n\n        <Table.Container\n            variation=\"borders\"\n            sizing=\"tiny\"\n        >\n            <Table.Header>\n                <Table.Row>\n                    <Table.Heading />\n                    <Table.Heading>\n                        Minimum\n                    </Table.Heading>\n\n                    <Table.Heading>\n                        Maximum\n                    </Table.Heading>\n                </Table.Row>\n            </Table.Header>\n\n            <Table.Section>\n                <Table.Row>\n                    <Table.Column>\n                        <Text is=\"strong\">mobile</Text>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>0px</Code>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>640px</Code>\n                    </Table.Column>\n                </Table.Row>\n\n                <Table.Row>\n                    <Table.Column>\n                        <Text is=\"strong\">tablet</Text>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>641px</Code>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>768px</Code>\n                    </Table.Column>\n                </Table.Row>\n\n                <Table.Row>\n                    <Table.Column>\n                        <Text is=\"strong\">\n                            desktop\n                        </Text>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>769px</Code>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>1024px</Code>\n                    </Table.Column>\n                </Table.Row>\n\n                <Table.Row>\n                    <Table.Column>\n                        <Text is=\"strong\">\n                            widescreen\n                        </Text>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>1025px</Code>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>∞</Code>\n                    </Table.Column>\n                </Table.Row>\n            </Table.Section>\n\n            <Table.Footer>\n                <Table.Row>\n                    <Table.Heading />\n                    <Table.Heading>\n                        Minimum\n                    </Table.Heading>\n\n                    <Table.Heading>\n                        Maximum\n                    </Table.Heading>\n                </Table.Row>\n            </Table.Footer>\n        </Table.Container>\n    </div>\n\n    <div>\n        <Text is=\"strong\">SMALL</Text>\n\n        <Table.Container\n            variation=\"borders\"\n            sizing=\"small\"\n        >\n            <Table.Header>\n                <Table.Row>\n                    <Table.Heading />\n                    <Table.Heading>\n                        Minimum\n                    </Table.Heading>\n\n                    <Table.Heading>\n                        Maximum\n                    </Table.Heading>\n                </Table.Row>\n            </Table.Header>\n\n            <Table.Section>\n                <Table.Row>\n                    <Table.Column>\n                        <Text is=\"strong\">mobile</Text>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>0px</Code>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>640px</Code>\n                    </Table.Column>\n                </Table.Row>\n\n                <Table.Row>\n                    <Table.Column>\n                        <Text is=\"strong\">tablet</Text>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>641px</Code>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>768px</Code>\n                    </Table.Column>\n                </Table.Row>\n\n                <Table.Row>\n                    <Table.Column>\n                        <Text is=\"strong\">\n                            desktop\n                        </Text>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>769px</Code>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>1024px</Code>\n                    </Table.Column>\n                </Table.Row>\n\n                <Table.Row>\n                    <Table.Column>\n                        <Text is=\"strong\">\n                            widescreen\n                        </Text>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>1025px</Code>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>∞</Code>\n                    </Table.Column>\n                </Table.Row>\n            </Table.Section>\n\n            <Table.Footer>\n                <Table.Row>\n                    <Table.Heading />\n                    <Table.Heading>\n                        Minimum\n                    </Table.Heading>\n\n                    <Table.Heading>\n                        Maximum\n                    </Table.Heading>\n                </Table.Row>\n            </Table.Footer>\n        </Table.Container>\n    </div>\n\n    <div>\n        <Text is=\"strong\">MEDIUM</Text>\n\n        <Table.Container\n            variation=\"borders\"\n            sizing=\"medium\"\n        >\n            <Table.Header>\n                <Table.Row>\n                    <Table.Heading />\n                    <Table.Heading>\n                        Minimum\n                    </Table.Heading>\n\n                    <Table.Heading>\n                        Maximum\n                    </Table.Heading>\n                </Table.Row>\n            </Table.Header>\n\n            <Table.Section>\n                <Table.Row>\n                    <Table.Column>\n                        <Text is=\"strong\">mobile</Text>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>0px</Code>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>640px</Code>\n                    </Table.Column>\n                </Table.Row>\n\n                <Table.Row>\n                    <Table.Column>\n                        <Text is=\"strong\">tablet</Text>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>641px</Code>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>768px</Code>\n                    </Table.Column>\n                </Table.Row>\n\n                <Table.Row>\n                    <Table.Column>\n                        <Text is=\"strong\">\n                            desktop\n                        </Text>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>769px</Code>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>1024px</Code>\n                    </Table.Column>\n                </Table.Row>\n\n                <Table.Row>\n                    <Table.Column>\n                        <Text is=\"strong\">\n                            widescreen\n                        </Text>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>1025px</Code>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>∞</Code>\n                    </Table.Column>\n                </Table.Row>\n            </Table.Section>\n\n            <Table.Footer>\n                <Table.Row>\n                    <Table.Heading />\n                    <Table.Heading>\n                        Minimum\n                    </Table.Heading>\n\n                    <Table.Heading>\n                        Maximum\n                    </Table.Heading>\n                </Table.Row>\n            </Table.Footer>\n        </Table.Container>\n    </div>\n\n    <div>\n        <Text is=\"strong\">LARGE</Text>\n\n        <Table.Container\n            variation=\"borders\"\n            sizing=\"large\"\n        >\n            <Table.Header>\n                <Table.Row>\n                    <Table.Heading />\n                    <Table.Heading>\n                        Minimum\n                    </Table.Heading>\n\n                    <Table.Heading>\n                        Maximum\n                    </Table.Heading>\n                </Table.Row>\n            </Table.Header>\n\n            <Table.Section>\n                <Table.Row>\n                    <Table.Column>\n                        <Text is=\"strong\">mobile</Text>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>0px</Code>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>640px</Code>\n                    </Table.Column>\n                </Table.Row>\n\n                <Table.Row>\n                    <Table.Column>\n                        <Text is=\"strong\">tablet</Text>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>641px</Code>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>768px</Code>\n                    </Table.Column>\n                </Table.Row>\n\n                <Table.Row>\n                    <Table.Column>\n                        <Text is=\"strong\">\n                            desktop\n                        </Text>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>769px</Code>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>1024px</Code>\n                    </Table.Column>\n                </Table.Row>\n\n                <Table.Row>\n                    <Table.Column>\n                        <Text is=\"strong\">\n                            widescreen\n                        </Text>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>1025px</Code>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>∞</Code>\n                    </Table.Column>\n                </Table.Row>\n            </Table.Section>\n\n            <Table.Footer>\n                <Table.Row>\n                    <Table.Heading />\n                    <Table.Heading>\n                        Minimum\n                    </Table.Heading>\n\n                    <Table.Heading>\n                        Maximum\n                    </Table.Heading>\n                </Table.Row>\n            </Table.Footer>\n        </Table.Container>\n    </div>\n\n    <div>\n        <Text is=\"strong\">HUGE</Text>\n\n        <Table.Container\n            variation=\"borders\"\n            sizing=\"huge\"\n        >\n            <Table.Header>\n                <Table.Row>\n                    <Table.Heading />\n                    <Table.Heading>\n                        Minimum\n                    </Table.Heading>\n\n                    <Table.Heading>\n                        Maximum\n                    </Table.Heading>\n                </Table.Row>\n            </Table.Header>\n\n            <Table.Section>\n                <Table.Row>\n                    <Table.Column>\n                        <Text is=\"strong\">mobile</Text>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>0px</Code>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>640px</Code>\n                    </Table.Column>\n                </Table.Row>\n\n                <Table.Row>\n                    <Table.Column>\n                        <Text is=\"strong\">tablet</Text>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>641px</Code>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>768px</Code>\n                    </Table.Column>\n                </Table.Row>\n\n                <Table.Row>\n                    <Table.Column>\n                        <Text is=\"strong\">\n                            desktop\n                        </Text>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>769px</Code>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>1024px</Code>\n                    </Table.Column>\n                </Table.Row>\n\n                <Table.Row>\n                    <Table.Column>\n                        <Text is=\"strong\">\n                            widescreen\n                        </Text>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>1025px</Code>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>∞</Code>\n                    </Table.Column>\n                </Table.Row>\n            </Table.Section>\n\n            <Table.Footer>\n                <Table.Row>\n                    <Table.Heading />\n                    <Table.Heading>\n                        Minimum\n                    </Table.Heading>\n\n                    <Table.Heading>\n                        Maximum\n                    </Table.Heading>\n                </Table.Row>\n            </Table.Footer>\n        </Table.Container>\n    </div>\n\n    <div>\n        <Text is=\"strong\">MASSIVE</Text>\n\n        <Table.Container\n            variation=\"borders\"\n            sizing=\"massive\"\n        >\n            <Table.Header>\n                <Table.Row>\n                    <Table.Heading />\n                    <Table.Heading>\n                        Minimum\n                    </Table.Heading>\n\n                    <Table.Heading>\n                        Maximum\n                    </Table.Heading>\n                </Table.Row>\n            </Table.Header>\n\n            <Table.Section>\n                <Table.Row>\n                    <Table.Column>\n                        <Text is=\"strong\">mobile</Text>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>0px</Code>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>640px</Code>\n                    </Table.Column>\n                </Table.Row>\n\n                <Table.Row>\n                    <Table.Column>\n                        <Text is=\"strong\">tablet</Text>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>641px</Code>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>768px</Code>\n                    </Table.Column>\n                </Table.Row>\n\n                <Table.Row>\n                    <Table.Column>\n                        <Text is=\"strong\">\n                            desktop\n                        </Text>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>769px</Code>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>1024px</Code>\n                    </Table.Column>\n                </Table.Row>\n\n                <Table.Row>\n                    <Table.Column>\n                        <Text is=\"strong\">\n                            widescreen\n                        </Text>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>1025px</Code>\n                    </Table.Column>\n\n                    <Table.Column>\n                        <Code>∞</Code>\n                    </Table.Column>\n                </Table.Row>\n            </Table.Section>\n\n            <Table.Footer>\n                <Table.Row>\n                    <Table.Heading />\n                    <Table.Heading>\n                        Minimum\n                    </Table.Heading>\n\n                    <Table.Heading>\n                        Maximum\n                    </Table.Heading>\n                </Table.Row>\n            </Table.Footer>\n        </Table.Container>\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=table-spans","title":"Table Spans","text":"<script>\n    import {Table} from \"@kahi-ui/framework\";\n</script>\n\n<Table.Container>\n    <Table.Header>\n        <Table.Row>\n            <Table.Heading span_x={2}>\n                span_x 2 x span_y 1\n            </Table.Heading>\n\n            <Table.Heading>\n                span_x 1 x span_y 1\n            </Table.Heading>\n        </Table.Row>\n    </Table.Header>\n\n    <Table.Section>\n        <Table.Row>\n            <Table.Column>\n                span_x 1 x span_y 1\n            </Table.Column>\n\n            <Table.Column span_y={2}>\n                span_x 1 x span_y 2\n            </Table.Column>\n        </Table.Row>\n\n        <Table.Row>\n            <Table.Column>\n                span_x 1 x span_y 1\n            </Table.Column>\n        </Table.Row>\n    </Table.Section>\n\n    <Table.Footer>\n        <Table.Row>\n            <Table.Heading span_x={3}>\n                span_x 3 x span_y 1\n            </Table.Heading>\n        </Table.Row>\n    </Table.Footer>\n</Table.Container>"},{"identifier":"/playground?snippet=table-stripes","title":"Table Stripes","text":"<script>\n    import {\n        Code,\n        Table,\n        Text,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Table.Container variation=\"stripes\">\n    <Table.Header>\n        <Table.Row>\n            <Table.Heading />\n            <Table.Heading>Minimum</Table.Heading>\n            <Table.Heading>Maximum</Table.Heading>\n        </Table.Row>\n    </Table.Header>\n\n    <Table.Section>\n        <Table.Row>\n            <Table.Column>\n                <Text is=\"strong\">mobile</Text>\n            </Table.Column>\n\n            <Table.Column>\n                <Code>0px</Code>\n            </Table.Column>\n\n            <Table.Column>\n                <Code>640px</Code>\n            </Table.Column>\n        </Table.Row>\n\n        <Table.Row>\n            <Table.Column>\n                <Text is=\"strong\">tablet</Text>\n            </Table.Column>\n\n            <Table.Column>\n                <Code>641px</Code>\n            </Table.Column>\n\n            <Table.Column>\n                <Code>768px</Code>\n            </Table.Column>\n        </Table.Row>\n\n        <Table.Row>\n            <Table.Column>\n                <Text is=\"strong\">desktop</Text>\n            </Table.Column>\n\n            <Table.Column>\n                <Code>769px</Code>\n            </Table.Column>\n\n            <Table.Column>\n                <Code>1024px</Code>\n            </Table.Column>\n        </Table.Row>\n\n        <Table.Row>\n            <Table.Column>\n                <Text is=\"strong\">widescreen</Text>\n            </Table.Column>\n\n            <Table.Column>\n                <Code>1025px</Code>\n            </Table.Column>\n\n            <Table.Column>\n                <Code>∞</Code>\n            </Table.Column>\n        </Table.Row>\n    </Table.Section>\n\n    <Table.Footer>\n        <Table.Row>\n            <Table.Heading />\n            <Table.Heading>Minimum</Table.Heading>\n            <Table.Heading>Maximum</Table.Heading>\n        </Table.Row>\n    </Table.Footer>\n</Table.Container>"},{"identifier":"/playground?snippet=text-alignment","title":"Text Alignment","text":"<script>\n    import {Stack, Text} from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container spacing=\"medium\">\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </div>\n\n    <div>\n        <Text is=\"strong\">CENTER</Text>\n        <Text alignment_x=\"center\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </div>\n\n    <div>\n        <Text is=\"strong\">JUSTIFY</Text>\n        <Text alignment_x=\"justify\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </div>\n\n    <div>\n        <Text is=\"strong\">LEFT</Text>\n        <Text alignment_x=\"left\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </div>\n\n    <div>\n        <Text is=\"strong\">RIGHT</Text>\n        <Text alignment_x=\"right\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=text-other-tags","title":"Text Other Tags","text":"<script>\n    import {Stack, Text} from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container alignment_x=\"left\" spacing=\"medium\">\n    <Text is=\"abbr\">Abbreviation</Text>\n\n    <Text is=\"b\">Bold</Text>\n    <Text is=\"strong\">Strong</Text>\n\n    <Text is=\"del\">Deleted</Text>\n    <Text is=\"s\">Strikethrough</Text>\n\n    <Text is=\"em\">Emphasis</Text>\n    <Text is=\"i\">Italic</Text>\n\n    <Text is=\"ins\">Inserted</Text>\n    <Text is=\"u\">Underline</Text>\n\n    <Text is=\"mark\">Highlighted</Text>\n    <Text is=\"samp\">Sample</Text>\n\n    <Text is=\"sub\">sub</Text>\n    <Text is=\"sup\">sup</Text>\n</Stack.Container>"},{"identifier":"/playground?snippet=text-palette","title":"Text Palette","text":"<script>\n    import {Stack, Text} from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    class=\"text-palette\"\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </div>\n\n    <div>\n        <Text is=\"strong\">ACCENT</Text>\n        <Text palette=\"accent\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </div>\n\n    <div>\n        <Text is=\"strong\">NEUTRAL</Text>\n        <Text palette=\"neutral\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </div>\n\n    <div>\n        <Text is=\"strong\">DARK</Text>\n        <Text palette=\"dark\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </div>\n\n    <div>\n        <Text is=\"strong\">LIGHT</Text>\n        <Text palette=\"light\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </div>\n\n    <div>\n        <Text is=\"strong\">ALERT</Text>\n        <Text palette=\"alert\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </div>\n\n    <div>\n        <Text is=\"strong\">AFFIRMATIVE</Text>\n        <Text palette=\"affirmative\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </div>\n\n    <div>\n        <Text is=\"strong\">INFORMATIVE</Text>\n        <Text palette=\"informative\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </div>\n\n    <div>\n        <Text is=\"strong\">NEGATIVE</Text>\n        <Text palette=\"negative\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </div>\n</Stack.Container>\n\n<style>\n    :global(.text-palette > div) {\n        max-width: 25ch;\n    }\n</style>"},{"identifier":"/playground?snippet=text-preview","title":"Text Preview","text":"<script>\n    import {Text} from \"@kahi-ui/framework\";\n</script>\n\n<Text>\n    Lorem ipsum dolor sit amet, consectetur adipiscing\n    elit. Proin et consectetur orci. Curabitur a\n    egestas turpis, vitae convallis sapien. Sed\n    pellentesque rutrum tellus, in iaculis dolor\n    tincidunt non. Orci varius natoque penatibus et\n    magnis dis parturient montes, nascetur ridiculus\n    mus.\n</Text>"},{"identifier":"/playground?snippet=text-sizing-block","title":"Text Sizing Block","text":"<script>\n    import {Stack, Text} from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    class=\"text-sizing-block\"\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n        <Text variation=\"block\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </div>\n\n    <div>\n        <Text is=\"strong\">NANO</Text>\n        <Text sizing=\"nano\" variation=\"block\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </div>\n\n    <div>\n        <Text is=\"strong\">TINY</Text>\n        <Text sizing=\"tiny\" variation=\"block\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </div>\n\n    <div>\n        <Text is=\"strong\">SMALL</Text>\n        <Text sizing=\"small\" variation=\"block\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </div>\n\n    <div>\n        <Text is=\"strong\">MEDIUM</Text>\n        <Text sizing=\"medium\" variation=\"block\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </div>\n\n    <div>\n        <Text is=\"strong\">LARGE</Text>\n        <Text sizing=\"large\" variation=\"block\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </div>\n\n    <div>\n        <Text is=\"strong\">HUGE</Text>\n        <Text sizing=\"huge\" variation=\"block\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </div>\n\n    <div>\n        <Text is=\"strong\">MASSIVE</Text>\n        <Text sizing=\"massive\" variation=\"block\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </div>\n</Stack.Container>\n\n<style>\n    :global(.text-sizing-block > div) {\n        max-width: 25ch;\n    }\n</style>"},{"identifier":"/playground?snippet=text-sizing-inline","title":"Text Sizing Inline","text":"<script>\n    import {Stack, Text} from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    class=\"text-sizing-inline\"\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </div>\n\n    <div>\n        <Text is=\"strong\">NANO</Text>\n        <Text sizing=\"nano\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </div>\n\n    <div>\n        <Text is=\"strong\">TINY</Text>\n        <Text sizing=\"tiny\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </div>\n\n    <div>\n        <Text is=\"strong\">SMALL</Text>\n        <Text sizing=\"small\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </div>\n\n    <div>\n        <Text is=\"strong\">MEDIUM</Text>\n        <Text sizing=\"medium\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </div>\n\n    <div>\n        <Text is=\"strong\">LARGE</Text>\n        <Text sizing=\"large\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </div>\n\n    <div>\n        <Text is=\"strong\">HUGE</Text>\n        <Text sizing=\"huge\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </div>\n\n    <div>\n        <Text is=\"strong\">MASSIVE</Text>\n        <Text sizing=\"massive\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </div>\n</Stack.Container>\n\n<style>\n    :global(.text-sizing-inline > div) {\n        max-width: 25ch;\n    }\n</style>"},{"identifier":"/playground?snippet=text-transform","title":"Text Transform","text":"<script>\n    import {Stack, Text} from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    class=\"text-transform\"\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </div>\n\n    <div>\n        <Text is=\"strong\">CAPITALIZE</Text>\n        <Text transform=\"capitalize\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </div>\n\n    <div>\n        <Text is=\"strong\">LOWERCASE</Text>\n        <Text transform=\"lowercase\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </div>\n\n    <div>\n        <Text is=\"strong\">UPPERCASE</Text>\n        <Text transform=\"uppercase\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </div>\n</Stack.Container>\n\n<style>\n    :global(.text-transform > div) {\n        max-width: 25ch;\n    }\n</style>"},{"identifier":"/playground?snippet=text-variation","title":"Text Variation","text":"<script>\n    import {Stack, Text} from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    class=\"text-variation\"\n    spacing=\"medium\"\n>\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n        <Text>\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </div>\n\n    <div>\n        <Text is=\"strong\">TRUNCATE</Text>\n        <Text variation=\"truncate\">\n            Lorem ipsum dolor sit amet, consectetur\n            adipiscing elit. Proin et consectetur orci.\n            Curabitur a egestas turpis, vitae convallis\n            sapien. Sed pellentesque rutrum tellus, in\n            iaculis dolor tincidunt non. Orci varius\n            natoque penatibus et magnis dis parturient\n            montes, nascetur ridiculus mus.\n        </Text>\n    </div>\n</Stack.Container>\n\n<style>\n    :global(.text-variation > div) {\n        max-width: 50ch;\n    }\n</style>"},{"identifier":"/playground?snippet=textinput-alignment","title":"TextInput Alignment","text":"<script>\n    import {\n        TextInput,\n        Stack,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <TextInput value=\"DEFAULT TextInput\" span_x=\"20\" />\n\n    <TextInput\n        alignment_x=\"left\"\n        value=\"LEFT TextInput\"\n        span_x=\"20\"\n    />\n\n    <TextInput\n        alignment_x=\"center\"\n        value=\"CENTER TextInput\"\n        span_x=\"20\"\n    />\n\n    <TextInput\n        alignment_x=\"right\"\n        value=\"RIGHT TextInput\"\n        span_x=\"20\"\n    />\n\n    <TextInput\n        alignment_x=\"justify\"\n        value=\"JUSTIFY TextInput\"\n        span_x=\"20\"\n    />\n</Stack.Container>"},{"identifier":"/playground?snippet=textinput-block","title":"TextInput Block","text":"<script>\n    import {\n        Stack,\n        TextInput,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    alignment_y=\"top\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <TextInput\n        variation=\"block\"\n        span_x=\"20\"\n        value=\"This is a DEFAULT TextInput\"\n    />\n\n    <TextInput\n        variation=\"block\"\n        palette=\"accent\"\n        span_x=\"20\"\n        value=\"This is a ACCENT TextInput\"\n    />\n\n    <TextInput\n        variation=\"block\"\n        palette=\"dark\"\n        span_x=\"20\"\n        value=\"This is a DARK TextInput\"\n    />\n\n    <TextInput\n        variation=\"block\"\n        palette=\"light\"\n        span_x=\"20\"\n        value=\"This is a LIGHT TextInput\"\n    />\n\n    <TextInput\n        variation=\"block\"\n        palette=\"alert\"\n        span_x=\"20\"\n        value=\"This is a ALERT TextInput\"\n    />\n\n    <TextInput\n        variation=\"block\"\n        palette=\"affirmative\"\n        span_x=\"20\"\n        value=\"This is a AFFIRMATIVE TextInput\"\n    />\n\n    <TextInput\n        variation=\"block\"\n        palette=\"negative\"\n        span_x=\"20\"\n        value=\"This is a NEGATIVE TextInput\"\n    />\n</Stack.Container>"},{"identifier":"/playground?snippet=textinput-flush","title":"TextInput Flush","text":"<script>\n    import {TextInput} from \"@kahi-ui/framework\";\n</script>\n\nInput some text:\n<TextInput\n    variation=\"flush\"\n    span_x=\"20\"\n    value=\"This is a FLUSH TextInput\"\n/>"},{"identifier":"/playground?snippet=textinput-input-masking---event","title":"TextInput Input Masking - Event","text":"<script>\n    import {TextInput} from \"@kahi-ui/framework\";\n\n    const CHARACTERS_HEXADECIMAL = new Set([\n        \"a\",\n        \"b\",\n        \"c\",\n        \"d\",\n        \"e\",\n        \"f\",\n        \"0\",\n        \"1\",\n        \"2\",\n        \"3\",\n        \"4\",\n        \"5\",\n        \"6\",\n        \"7\",\n        \"8\",\n        \"9\",\n    ]);\n\n    function on_mask(event) {\n        for (const character of event.detail.value) {\n            if (\n                !CHARACTERS_HEXADECIMAL.has(\n                    character.toLowerCase()\n                )\n            ) {\n                event.preventDefault();\n                return;\n            }\n        }\n    }\n</script>\n\n<TextInput mask on:mask={on_mask} />"},{"identifier":"/playground?snippet=textinput-input-masking---pattern","title":"TextInput Input Masking - Pattern","text":"<script>\n    import {TextInput} from \"@kahi-ui/framework\";\n</script>\n\n<TextInput pattern=\"[0-9a-fA-F]+\" mask />"},{"identifier":"/playground?snippet=textinput-palette","title":"TextInput Palette","text":"<script>\n    import {\n        Stack,\n        TextInput,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    alignment_y=\"top\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <TextInput\n        span_x=\"20\"\n        value=\"This is a DEFAULT TextInput\"\n    />\n\n    <TextInput\n        palette=\"accent\"\n        span_x=\"20\"\n        value=\"This is a ACCENT TextInput\"\n    />\n\n    <TextInput\n        palette=\"dark\"\n        span_x=\"20\"\n        value=\"This is a DARK TextInput\"\n    />\n\n    <TextInput\n        palette=\"light\"\n        span_x=\"20\"\n        value=\"This is a LIGHT TextInput\"\n    />\n\n    <TextInput\n        palette=\"alert\"\n        span_x=\"20\"\n        value=\"This is a ALERT TextInput\"\n    />\n\n    <TextInput\n        palette=\"affirmative\"\n        span_x=\"20\"\n        value=\"This is a AFFIRMATIVE TextInput\"\n    />\n\n    <TextInput\n        palette=\"negative\"\n        span_x=\"20\"\n        value=\"This is a NEGATIVE TextInput\"\n    />\n</Stack.Container>"},{"identifier":"/playground?snippet=textinput-placeholder","title":"TextInput Placeholder","text":"<script>\n    import {TextInput} from \"@kahi-ui/framework\";\n</script>\n\n<TextInput placeholder=\"...enter some text\" />"},{"identifier":"/playground?snippet=textinput-preview","title":"TextInput Preview","text":"<script>\n    import {\n        Code,\n        Form,\n        TextInput,\n    } from \"@kahi-ui/framework\";\n\n    let value = \"sample@sample.org\";\n</script>\n\n<Form.Control logic_id=\"textinput-preview\">\n    <Form.Label>\n        Register E-Mail for Newsletter\n    </Form.Label>\n\n    <TextInput bind:value />\n    <Form.HelpText>\n        Make sure to enter a valid E-Mail Address, e.g.\n        <Code>sample@sample.org</Code>\n    </Form.HelpText>\n</Form.Control>"},{"identifier":"/playground?snippet=textinput-radius","title":"TextInput Radius","text":"<script>\n    import {\n        Stack,\n        TextInput,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    alignment_y=\"top\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <TextInput\n        span_x=\"20\"\n        value=\"This is a DEFAULT TextInput\"\n    />\n\n    <TextInput\n        radius=\"none\"\n        span_x=\"20\"\n        value=\"This is a NONE TextInput\"\n    />\n\n    <TextInput\n        radius=\"nano\"\n        span_x=\"20\"\n        value=\"This is a NANO TextInput\"\n    />\n\n    <TextInput\n        radius=\"tiny\"\n        span_x=\"20\"\n        value=\"This is a TINY TextInput\"\n    />\n\n    <TextInput\n        radius=\"small\"\n        span_x=\"20\"\n        value=\"This is a SMALL TextInput\"\n    />\n\n    <TextInput\n        radius=\"medium\"\n        span_x=\"20\"\n        value=\"This is a MEDIUM TextInput\"\n    />\n\n    <TextInput\n        sizing=\"large\"\n        span_x=\"20\"\n        value=\"This is a LARGE TextInput\"\n    />\n\n    <TextInput\n        radius=\"huge\"\n        span_x=\"20\"\n        value=\"This is a HUGE TextInput\"\n    />\n\n    <TextInput\n        radius=\"massive\"\n        span_x=\"20\"\n        value=\"This is a MASSIVE TextInput\"\n    />\n</Stack.Container>"},{"identifier":"/playground?snippet=textinput-resizable-textarea","title":"TextInput Resizable TextArea","text":"<script>\n    import {TextInput} from \"@kahi-ui/framework\";\n</script>\n\n<TextInput\n    is=\"textarea\"\n    value=\"This is a resizable TextArea\"\n    resizable\n/>"},{"identifier":"/playground?snippet=textinput-shapes","title":"TextInput Shapes","text":"<script>\n    import {\n        Stack,\n        TextInput,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    alignment_y=\"top\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <TextInput\n        span_x=\"20\"\n        value=\"This is a DEFAULT TextInput\"\n    />\n\n    <TextInput\n        shape=\"nano\"\n        span_x=\"20\"\n        value=\"This is a CIRCLE TextInput\"\n    />\n\n    <TextInput\n        shape=\"pill\"\n        span_x=\"20\"\n        value=\"This is a PILL TextInput\"\n    />\n</Stack.Container>"},{"identifier":"/playground?snippet=textinput-sizing","title":"TextInput Sizing","text":"<script>\n    import {\n        Stack,\n        TextInput,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    alignment_y=\"top\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <TextInput\n        span_x=\"20\"\n        value=\"This is a DEFAULT TextInput\"\n    />\n\n    <TextInput\n        sizing=\"nano\"\n        span_x=\"20\"\n        value=\"This is a NANO TextInput\"\n    />\n\n    <TextInput\n        sizing=\"tiny\"\n        span_x=\"20\"\n        value=\"This is a TINY TextInput\"\n    />\n\n    <TextInput\n        sizing=\"small\"\n        span_x=\"20\"\n        value=\"This is a SMALL TextInput\"\n    />\n\n    <TextInput\n        sizing=\"medium\"\n        span_x=\"20\"\n        value=\"This is a MEDIUM TextInput\"\n    />\n\n    <TextInput\n        sizing=\"large\"\n        span_x=\"20\"\n        value=\"This is a LARGE TextInput\"\n    />\n\n    <TextInput\n        sizing=\"huge\"\n        span_x=\"20\"\n        value=\"This is a HUGE TextInput\"\n    />\n\n    <TextInput\n        sizing=\"massive\"\n        span_x=\"20\"\n        value=\"This is a MASSIVE TextInput\"\n    />\n</Stack.Container>"},{"identifier":"/playground?snippet=textinput-span-x--y","title":"TextInput Span X + Y","text":"<script>\n    import {TextInput} from \"@kahi-ui/framework\";\n</script>\n\n<TextInput\n    value=\"This input should be about 4 characters wide.\"\n    span_x=\"4\"\n/>\n\n<TextInput\n    is=\"textarea\"\n    value=\"This input should be about 3 lines tall.\"\n    span_y=\"3\"\n/>"},{"identifier":"/playground?snippet=textinput-textarea","title":"TextInput TextArea","text":"<script>\n    import {TextInput} from \"@kahi-ui/framework\";\n</script>\n\n<TextInput\n    is=\"textarea\"\n    value=\"This is a TextArea TextInput\"\n/>"},{"identifier":"/playground?snippet=textinput-types","title":"TextInput Types","text":"<script>\n    import {\n        Stack,\n        TextInput,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    alignment_y=\"top\"\n    spacing=\"medium\"\n    variation=\"wrap\"\n>\n    <TextInput\n        type=\"email\"\n        span_x=\"20\"\n        value=\"sample@sample.org\"\n    />\n\n    <TextInput\n        type=\"password\"\n        span_x=\"20\"\n        value=\"abcdef1002\"\n    />\n\n    <TextInput\n        type=\"url\"\n        span_x=\"20\"\n        value=\"https://google.com\"\n    />\n</Stack.Container>"},{"identifier":"/playground?snippet=tile-elevation","title":"Tile Elevation","text":"<script>\n    import {\n        Stack,\n        Text,\n        Tile,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container spacing=\"large\">\n    <Tile.Container width=\"content-max\">\n        <Tile.Figure>\n            <img src={IMAGE_AVATAR} />\n        </Tile.Figure>\n\n        <Tile.Section>\n            <Tile.Header>NovacBN</Tile.Header>\n\n            <Text>\n                <Text is=\"small\">\n                    joined 2018 &bullet; last online\n                    2021/05/29\n                </Text>\n            </Text>\n        </Tile.Section>\n\n        <Tile.Footer>\n            <Text is=\"small\">DEFAULT</Text>\n        </Tile.Footer>\n    </Tile.Container>\n\n    <Tile.Container\n        elevation=\"none\"\n        width=\"content-max\"\n    >\n        <Tile.Figure>\n            <img src={IMAGE_AVATAR} />\n        </Tile.Figure>\n\n        <Tile.Section>\n            <Tile.Header>NovacBN</Tile.Header>\n\n            <Text>\n                <Text is=\"small\">\n                    joined 2018 &bullet; last online\n                    2021/05/29\n                </Text>\n            </Text>\n        </Tile.Section>\n\n        <Tile.Footer>\n            <Text is=\"small\">NONE</Text>\n        </Tile.Footer>\n    </Tile.Container>\n\n    <Tile.Container\n        elevation=\"lowest\"\n        width=\"content-max\"\n    >\n        <Tile.Figure>\n            <img src={IMAGE_AVATAR} />\n        </Tile.Figure>\n\n        <Tile.Section>\n            <Tile.Header>NovacBN</Tile.Header>\n\n            <Text>\n                <Text is=\"small\">\n                    joined 2018 &bullet; last online\n                    2021/05/29\n                </Text>\n            </Text>\n        </Tile.Section>\n\n        <Tile.Footer>\n            <Text is=\"small\">LOWEST</Text>\n        </Tile.Footer>\n    </Tile.Container>\n\n    <Tile.Container\n        elevation=\"lower\"\n        width=\"content-max\"\n    >\n        <Tile.Figure>\n            <img src={IMAGE_AVATAR} />\n        </Tile.Figure>\n\n        <Tile.Section>\n            <Tile.Header>NovacBN</Tile.Header>\n\n            <Text>\n                <Text is=\"small\">\n                    joined 2018 &bullet; last online\n                    2021/05/29\n                </Text>\n            </Text>\n        </Tile.Section>\n\n        <Tile.Footer>\n            <Text is=\"small\">LOWER</Text>\n        </Tile.Footer>\n    </Tile.Container>\n\n    <Tile.Container\n        elevation=\"low\"\n        width=\"content-max\"\n    >\n        <Tile.Figure>\n            <img src={IMAGE_AVATAR} />\n        </Tile.Figure>\n\n        <Tile.Section>\n            <Tile.Header>NovacBN</Tile.Header>\n\n            <Text>\n                <Text is=\"small\">\n                    joined 2018 &bullet; last online\n                    2021/05/29\n                </Text>\n            </Text>\n        </Tile.Section>\n\n        <Tile.Footer>\n            <Text is=\"small\">LOW</Text>\n        </Tile.Footer>\n    </Tile.Container>\n\n    <Tile.Container\n        elevation=\"medium\"\n        width=\"content-max\"\n    >\n        <Tile.Figure>\n            <img src={IMAGE_AVATAR} />\n        </Tile.Figure>\n\n        <Tile.Section>\n            <Tile.Header>NovacBN</Tile.Header>\n\n            <Text>\n                <Text is=\"small\">\n                    joined 2018 &bullet; last online\n                    2021/05/29\n                </Text>\n            </Text>\n        </Tile.Section>\n\n        <Tile.Footer>\n            <Text is=\"small\">MEDIUM</Text>\n        </Tile.Footer>\n    </Tile.Container>\n\n    <Tile.Container\n        elevation=\"high\"\n        width=\"content-max\"\n    >\n        <Tile.Figure>\n            <img src={IMAGE_AVATAR} />\n        </Tile.Figure>\n\n        <Tile.Section>\n            <Tile.Header>NovacBN</Tile.Header>\n\n            <Text>\n                <Text is=\"small\">\n                    joined 2018 &bullet; last online\n                    2021/05/29\n                </Text>\n            </Text>\n        </Tile.Section>\n\n        <Tile.Footer>\n            <Text is=\"small\">HIGH</Text>\n        </Tile.Footer>\n    </Tile.Container>\n\n    <Tile.Container\n        elevation=\"highest\"\n        width=\"content-max\"\n    >\n        <Tile.Figure>\n            <img src={IMAGE_AVATAR} />\n        </Tile.Figure>\n\n        <Tile.Section>\n            <Tile.Header>NovacBN</Tile.Header>\n\n            <Text>\n                <Text is=\"small\">\n                    joined 2018 &bullet; last online\n                    2021/05/29\n                </Text>\n            </Text>\n        </Tile.Section>\n\n        <Tile.Footer>\n            <Text is=\"small\">HIGHEST</Text>\n        </Tile.Footer>\n    </Tile.Container>\n</Stack.Container>"},{"identifier":"/playground?snippet=tile-flush","title":"Tile Flush","text":"<script>\n    import {\n        Button,\n        Text,\n        Tile,\n    } from \"@kahi-ui/framework\";\n    import {UserPlus, Slash} from \"lucide-svelte\";\n</script>\n\n<Tile.Container width=\"content-max\" variation=\"flush\">\n    <Tile.Figure>\n        <img src={IMAGE_AVATAR} />\n    </Tile.Figure>\n\n    <Tile.Section>\n        <Tile.Header>NovacBN</Tile.Header>\n\n        <Text>\n            <Text is=\"small\">\n                joined 2018 &bullet; last online\n                2021/05/29\n            </Text>\n        </Text>\n    </Tile.Section>\n\n    <Tile.Footer>\n        <Button palette=\"affirmative\">\n            <UserPlus size=\"1em\" />\n        </Button>\n\n        <Button palette=\"negative\">\n            <Slash size=\"1em\" />\n        </Button>\n    </Tile.Footer>\n</Tile.Container>"},{"identifier":"/playground?snippet=tile-orientation","title":"Tile Orientation","text":"<script>\n    import {\n        Button,\n        Stack,\n        Text,\n        Tile,\n    } from \"@kahi-ui/framework\";\n    import {UserPlus, Slash} from \"lucide-svelte\";\n</script>\n\n<Stack.Container spacing=\"medium\">\n    <Tile.Container width=\"content-max\">\n        <Tile.Figure>\n            <img src={IMAGE_AVATAR} />\n        </Tile.Figure>\n\n        <Tile.Section>\n            <Tile.Header>NovacBN</Tile.Header>\n\n            <Text>\n                <Text is=\"small\">\n                    HORIZONTAL / DEFAULT\n                </Text>\n            </Text>\n        </Tile.Section>\n\n        <Tile.Footer>\n            <Button palette=\"affirmative\">\n                <UserPlus size=\"1em\" />\n            </Button>\n\n            <Button palette=\"negative\">\n                <Slash size=\"1em\" />\n            </Button>\n        </Tile.Footer>\n    </Tile.Container>\n\n    <Tile.Container width=\"content-max\">\n        <Tile.Figure>\n            <img src={IMAGE_AVATAR} />\n        </Tile.Figure>\n\n        <Tile.Section>\n            <Tile.Header>NovacBN</Tile.Header>\n\n            <Text>\n                <Text is=\"small\">VERTICAL</Text>\n            </Text>\n        </Tile.Section>\n\n        <Tile.Footer orientation=\"vertical\">\n            <Button palette=\"affirmative\">\n                <UserPlus size=\"1em\" />\n            </Button>\n\n            <Button palette=\"negative\">\n                <Slash size=\"1em\" />\n            </Button>\n        </Tile.Footer>\n    </Tile.Container>\n</Stack.Container>"},{"identifier":"/playground?snippet=tile-palette","title":"Tile Palette","text":"<script>\n    import {\n        Stack,\n        Text,\n        Tile,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container spacing=\"medium\">\n    <Tile.Container width=\"content-max\">\n        <Tile.Figure>\n            <img src={IMAGE_AVATAR} />\n        </Tile.Figure>\n\n        <Tile.Section>\n            <Tile.Header>NovacBN</Tile.Header>\n\n            <Text>\n                <Text is=\"small\">\n                    joined 2018 &bullet; last online\n                    2021/05/29\n                </Text>\n            </Text>\n        </Tile.Section>\n\n        <Tile.Footer>\n            <Text is=\"small\">DEFAULT</Text>\n        </Tile.Footer>\n    </Tile.Container>\n\n    <Tile.Container\n        palette=\"accent\"\n        width=\"content-max\"\n    >\n        <Tile.Figure>\n            <img src={IMAGE_AVATAR} />\n        </Tile.Figure>\n\n        <Tile.Section>\n            <Tile.Header>NovacBN</Tile.Header>\n\n            <Text>\n                <Text is=\"small\">\n                    joined 2018 &bullet; last online\n                    2021/05/29\n                </Text>\n            </Text>\n        </Tile.Section>\n\n        <Tile.Footer>\n            <Text is=\"small\">ACCENT</Text>\n        </Tile.Footer>\n    </Tile.Container>\n\n    <Tile.Container\n        palette=\"neutral\"\n        width=\"content-max\"\n    >\n        <Tile.Figure>\n            <img src={IMAGE_AVATAR} />\n        </Tile.Figure>\n\n        <Tile.Section>\n            <Tile.Header>NovacBN</Tile.Header>\n\n            <Text>\n                <Text is=\"small\">\n                    joined 2018 &bullet; last online\n                    2021/05/29\n                </Text>\n            </Text>\n        </Tile.Section>\n\n        <Tile.Footer>\n            <Text is=\"small\">NEUTRAL</Text>\n        </Tile.Footer>\n    </Tile.Container>\n\n    <Tile.Container palette=\"dark\" width=\"content-max\">\n        <Tile.Figure>\n            <img src={IMAGE_AVATAR} />\n        </Tile.Figure>\n\n        <Tile.Section>\n            <Tile.Header>NovacBN</Tile.Header>\n\n            <Text>\n                <Text is=\"small\">\n                    joined 2018 &bullet; last online\n                    2021/05/29\n                </Text>\n            </Text>\n        </Tile.Section>\n\n        <Tile.Footer>\n            <Text is=\"small\">DARK</Text>\n        </Tile.Footer>\n    </Tile.Container>\n\n    <Tile.Container\n        palette=\"light\"\n        width=\"content-max\"\n    >\n        <Tile.Figure>\n            <img src={IMAGE_AVATAR} />\n        </Tile.Figure>\n\n        <Tile.Section>\n            <Tile.Header>NovacBN</Tile.Header>\n\n            <Text>\n                <Text is=\"small\">\n                    joined 2018 &bullet; last online\n                    2021/05/29\n                </Text>\n            </Text>\n        </Tile.Section>\n\n        <Tile.Footer>\n            <Text is=\"small\">LIGHT</Text>\n        </Tile.Footer>\n    </Tile.Container>\n\n    <Tile.Container\n        palette=\"alert\"\n        width=\"content-max\"\n    >\n        <Tile.Figure>\n            <img src={IMAGE_AVATAR} />\n        </Tile.Figure>\n\n        <Tile.Section>\n            <Tile.Header>NovacBN</Tile.Header>\n\n            <Text>\n                <Text is=\"small\">\n                    joined 2018 &bullet; last online\n                    2021/05/29\n                </Text>\n            </Text>\n        </Tile.Section>\n\n        <Tile.Footer>\n            <Text is=\"small\">ALERT</Text>\n        </Tile.Footer>\n    </Tile.Container>\n\n    <Tile.Container\n        palette=\"affirmative\"\n        width=\"content-max\"\n    >\n        <Tile.Figure>\n            <img src={IMAGE_AVATAR} />\n        </Tile.Figure>\n\n        <Tile.Section>\n            <Tile.Header>NovacBN</Tile.Header>\n\n            <Text>\n                <Text is=\"small\">\n                    joined 2018 &bullet; last online\n                    2021/05/29\n                </Text>\n            </Text>\n        </Tile.Section>\n\n        <Tile.Footer>\n            <Text is=\"small\">AFFIRMATIVE</Text>\n        </Tile.Footer>\n    </Tile.Container>\n\n    <Tile.Container\n        palette=\"informative\"\n        width=\"content-max\"\n    >\n        <Tile.Figure>\n            <img src={IMAGE_AVATAR} />\n        </Tile.Figure>\n\n        <Tile.Section>\n            <Tile.Header>NovacBN</Tile.Header>\n\n            <Text>\n                <Text is=\"small\">\n                    joined 2018 &bullet; last online\n                    2021/05/29\n                </Text>\n            </Text>\n        </Tile.Section>\n\n        <Tile.Footer>\n            <Text is=\"small\">INFORMATIVE</Text>\n        </Tile.Footer>\n    </Tile.Container>\n\n    <Tile.Container\n        palette=\"negative\"\n        width=\"content-max\"\n    >\n        <Tile.Figure>\n            <img src={IMAGE_AVATAR} />\n        </Tile.Figure>\n\n        <Tile.Section>\n            <Tile.Header>NovacBN</Tile.Header>\n\n            <Text>\n                <Text is=\"small\">\n                    joined 2018 &bullet; last online\n                    2021/05/29\n                </Text>\n            </Text>\n        </Tile.Section>\n\n        <Tile.Footer>\n            <Text is=\"small\">NEGATIVE</Text>\n        </Tile.Footer>\n    </Tile.Container>\n</Stack.Container>"},{"identifier":"/playground?snippet=tile-preview","title":"Tile Preview","text":"<script>\n    import {\n        Button,\n        Text,\n        Tile,\n    } from \"@kahi-ui/framework\";\n    import {UserPlus, Slash} from \"lucide-svelte\";\n</script>\n\n<Tile.Container width=\"content-max\">\n    <Tile.Figure>\n        <img src={IMAGE_AVATAR} />\n    </Tile.Figure>\n\n    <Tile.Section>\n        <Tile.Header>NovacBN</Tile.Header>\n\n        <Text>\n            <Text is=\"small\">\n                joined 2018 &bullet; last online\n                2021/05/29\n            </Text>\n        </Text>\n    </Tile.Section>\n\n    <Tile.Footer>\n        <Button palette=\"affirmative\">\n            <UserPlus size=\"1em\" />\n        </Button>\n\n        <Button palette=\"negative\">\n            <Slash size=\"1em\" />\n        </Button>\n    </Tile.Footer>\n</Tile.Container>"},{"identifier":"/playground?snippet=tile-sizing","title":"Tile Sizing","text":"<script>\n    import {\n        Stack,\n        Text,\n        Tile,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    alignment_y=\"top\"\n    variation=\"wrap\"\n>\n    <Tile.Container width=\"content-max\">\n        <Tile.Figure>\n            <img src={IMAGE_AVATAR} />\n        </Tile.Figure>\n\n        <Tile.Section>\n            <Tile.Header>DEFAULT</Tile.Header>\n\n            <Text>\n                <Text is=\"small\">\n                    Lorem ipsum dolor sit amet,\n                    consectetur adipiscing elit.\n                </Text>\n            </Text>\n        </Tile.Section>\n    </Tile.Container>\n\n    <Tile.Container sizing=\"nano\" width=\"content-max\">\n        <Tile.Figure>\n            <img src={IMAGE_AVATAR} />\n        </Tile.Figure>\n\n        <Tile.Section>\n            <Tile.Header>NANO</Tile.Header>\n\n            <Text>\n                <Text is=\"small\">\n                    Lorem ipsum dolor sit amet,\n                    consectetur adipiscing elit.\n                </Text>\n            </Text>\n        </Tile.Section>\n    </Tile.Container>\n\n    <Tile.Container sizing=\"tiny\" width=\"content-max\">\n        <Tile.Figure>\n            <img src={IMAGE_AVATAR} />\n        </Tile.Figure>\n\n        <Tile.Section>\n            <Tile.Header>TINY</Tile.Header>\n\n            <Text>\n                <Text is=\"small\">\n                    Lorem ipsum dolor sit amet,\n                    consectetur adipiscing elit.\n                </Text>\n            </Text>\n        </Tile.Section>\n    </Tile.Container>\n\n    <Tile.Container sizing=\"small\" width=\"content-max\">\n        <Tile.Figure>\n            <img src={IMAGE_AVATAR} />\n        </Tile.Figure>\n\n        <Tile.Section>\n            <Tile.Header>SMALL</Tile.Header>\n\n            <Text>\n                <Text is=\"small\">\n                    Lorem ipsum dolor sit amet,\n                    consectetur adipiscing elit.\n                </Text>\n            </Text>\n        </Tile.Section>\n    </Tile.Container>\n\n    <Tile.Container\n        sizing=\"medium\"\n        width=\"content-max\"\n    >\n        <Tile.Figure>\n            <img src={IMAGE_AVATAR} />\n        </Tile.Figure>\n\n        <Tile.Section>\n            <Tile.Header>MEDIUM</Tile.Header>\n\n            <Text>\n                <Text is=\"small\">\n                    Lorem ipsum dolor sit amet,\n                    consectetur adipiscing elit.\n                </Text>\n            </Text>\n        </Tile.Section>\n    </Tile.Container>\n\n    <Tile.Container sizing=\"large\" width=\"content-max\">\n        <Tile.Figure>\n            <img src={IMAGE_AVATAR} />\n        </Tile.Figure>\n\n        <Tile.Section>\n            <Tile.Header>LARGE</Tile.Header>\n\n            <Text>\n                <Text is=\"small\">\n                    Lorem ipsum dolor sit amet,\n                    consectetur adipiscing elit.\n                </Text>\n            </Text>\n        </Tile.Section>\n    </Tile.Container>\n\n    <Tile.Container sizing=\"huge\" width=\"content-max\">\n        <Tile.Figure>\n            <img src={IMAGE_AVATAR} />\n        </Tile.Figure>\n\n        <Tile.Section>\n            <Tile.Header>HUGE</Tile.Header>\n\n            <Text>\n                <Text is=\"small\">\n                    Lorem ipsum dolor sit amet,\n                    consectetur adipiscing elit.\n                </Text>\n            </Text>\n        </Tile.Section>\n    </Tile.Container>\n\n    <Tile.Container\n        sizing=\"massive\"\n        width=\"content-max\"\n    >\n        <Tile.Figure>\n            <img src={IMAGE_AVATAR} />\n        </Tile.Figure>\n\n        <Tile.Section>\n            <Tile.Header>MASSIVE</Tile.Header>\n\n            <Text>\n                <Text is=\"small\">\n                    Lorem ipsum dolor sit amet,\n                    consectetur adipiscing elit.\n                </Text>\n            </Text>\n        </Tile.Section>\n    </Tile.Container>\n</Stack.Container>"},{"identifier":"/playground?snippet=timepicker-12-hour","title":"TimePicker 12 Hour","text":"<script>\n    import {TimePicker} from \"@kahi-ui/framework\";\n\n    const value = \"13:30:15\";\n</script>\n\n<TimePicker palette=\"accent\" {value} hour_12 />"},{"identifier":"/playground?snippet=timepicker-24-hour","title":"TimePicker 24 Hour","text":"<script>\n    import {TimePicker} from \"@kahi-ui/framework\";\n\n    const value = \"13:30:15\";\n</script>\n\n<TimePicker palette=\"accent\" hour_12={false} {value} />"},{"identifier":"/playground?snippet=timepicker-custom-format","title":"TimePicker Custom Format","text":"<script>\n    import {TimePicker} from \"@kahi-ui/framework\";\n\n    const value = \"13:30:15\";\n</script>\n\n<TimePicker\n    palette=\"accent\"\n    hour=\"2-digit\"\n    minute=\"2-digit\"\n    second=\"2-digit\"\n    {value}\n    hour_12\n/>"},{"identifier":"/playground?snippet=timepicker-disabled","title":"TimePicker Disabled","text":"<script>\n    import {TimePicker} from \"@kahi-ui/framework\";\n\n    const value = \"13:30:15\";\n</script>\n\n<TimePicker palette=\"accent\" {value} disabled />"},{"identifier":"/playground?snippet=timepicker-disabled-1","title":"TimePicker Disabled","text":"<script>\n    import {TimePicker} from \"@kahi-ui/framework\";\n\n    const value = \"13:30:15\";\n\n    const disabled = [\"11:00:00\", \"15:00:00\"];\n</script>\n\n<TimePicker palette=\"accent\" {disabled} {value} />"},{"identifier":"/playground?snippet=timepicker-highlight","title":"TimePicker Highlight","text":"<script>\n    import {TimePicker} from \"@kahi-ui/framework\";\n\n    const value = \"13:30:15\";\n\n    const highlight = [\"15:00:00\"];\n</script>\n\n<TimePicker palette=\"accent\" {highlight} {value} />"},{"identifier":"/playground?snippet=timepicker-maximum--minimum","title":"TimePicker Maximum + Minimum","text":"<script>\n    import {TimePicker} from \"@kahi-ui/framework\";\n\n    const value = \"13:30:15\";\n\n    const max = \"15:45:30\";\n    const min = \"11:15:00\";\n</script>\n\n<TimePicker palette=\"accent\" {max} {min} {value} />"},{"identifier":"/playground?snippet=timepicker-now","title":"TimePicker Now","text":"<script>\n    import {TimePicker} from \"@kahi-ui/framework\";\n\n    const value = \"13:30:15\";\n</script>\n\n<TimePicker palette=\"accent\" {value} now />"},{"identifier":"/playground?snippet=timepicker-now-1","title":"TimePicker Now","text":"<script>\n    import {TimePicker} from \"@kahi-ui/framework\";\n\n    const value = \"13:30:15\";\n</script>\n\n<TimePicker palette=\"accent\" {value} scroll />"},{"identifier":"/playground?snippet=timepicker-preview","title":"TimePicker Preview","text":"<script>\n    import {TimePicker} from \"@kahi-ui/framework\";\n\n    const value = \"13:30:15\";\n</script>\n\n<TimePicker palette=\"accent\" {value} />"},{"identifier":"/playground?snippet=timepicker-sizing","title":"TimePicker Sizing","text":"<script>\n    import {\n        Stack,\n        Text,\n        TimePicker,\n    } from \"@kahi-ui/framework\";\n\n    const value = \"13:30:15\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    alignment_y=\"top\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n\n        <TimePicker palette=\"accent\" {value} />\n    </div>\n\n    <div>\n        <Text is=\"strong\">NANO</Text>\n\n        <TimePicker\n            palette=\"accent\"\n            sizing=\"nano\"\n            {value}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">TINY</Text>\n\n        <TimePicker\n            palette=\"accent\"\n            sizing=\"tiny\"\n            {value}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">SMALL</Text>\n\n        <TimePicker\n            palette=\"accent\"\n            sizing=\"small\"\n            {value}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">MEDIUM</Text>\n\n        <TimePicker\n            palette=\"accent\"\n            sizing=\"medium\"\n            {value}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">LARGE</Text>\n\n        <TimePicker\n            palette=\"accent\"\n            sizing=\"large\"\n            {value}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">HUGE</Text>\n\n        <TimePicker\n            palette=\"accent\"\n            sizing=\"huge\"\n            {value}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">MASSIVE</Text>\n\n        <TimePicker\n            palette=\"accent\"\n            sizing=\"massive\"\n            {value}\n        />\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=timestamp-12-hour","title":"TimeStamp 12 Hour","text":"<script>\n    import {TimeStamp} from \"@kahi-ui/framework\";\n\n    const timestamp = \"13:00:42\";\n</script>\n\n<TimeStamp hour_12 {timestamp} />"},{"identifier":"/playground?snippet=timestamp-custom-format","title":"TimeStamp Custom Format","text":"<script>\n    import {TimeStamp} from \"@kahi-ui/framework\";\n\n    const timestamp = \"13:00:42\";\n</script>\n\n<TimeStamp hour=\"2-digit\" hour_12 {timestamp} />"},{"identifier":"/playground?snippet=timestamp-preview","title":"TimeStamp Preview","text":"<script>\n    import {TimeStamp} from \"@kahi-ui/framework\";\n\n    const timestamp = \"13:00:42\";\n</script>\n\n<TimeStamp {timestamp} />"},{"identifier":"/playground?snippet=transition-clip","title":"Transition Clip","text":"<script>\n    import {\n        Box,\n        Button,\n        Grid,\n        Transition,\n    } from \"@kahi-ui/framework\";\n\n    let variation = undefined;\n</script>\n\n<Button\n    on:click={() =>\n        (variation =\n            variation === \"exit\" ? \"enter\" : \"exit\")}\n>\n    Toggle Variation\n</Button>\n\n<Grid.Container\n    points={[\"2\", \"mobile:1\"]}\n    spacing=\"medium\"\n>\n    <Transition\n        animation=\"clip\"\n        direction=\"bottom\"\n        {variation}\n    >\n        <Box palette=\"inverse\" padding=\"medium\">\n            Clip BOTTOM / DEFAULT\n        </Box>\n    </Transition>\n\n    <Transition\n        animation=\"clip\"\n        direction=\"left\"\n        {variation}\n    >\n        <Box palette=\"inverse\" padding=\"medium\">\n            Clip LEFT\n        </Box>\n    </Transition>\n\n    <Transition\n        animation=\"clip\"\n        direction=\"right\"\n        {variation}\n    >\n        <Box palette=\"inverse\" padding=\"medium\">\n            Clip RIGHT\n        </Box>\n    </Transition>\n\n    <Transition\n        animation=\"clip\"\n        direction=\"top\"\n        {variation}\n    >\n        <Box palette=\"inverse\" padding=\"medium\">\n            Clip TOP\n        </Box>\n    </Transition>\n</Grid.Container>"},{"identifier":"/playground?snippet=transition-clip-dom","title":"Transition Clip DOM","text":"<script>\n    import {\n        Box,\n        Button,\n        Grid,\n        Transition,\n    } from \"@kahi-ui/framework\";\n\n    let dom = false;\n</script>\n\n<Button on:click={() => (dom = !dom)}>\n    Toggle DOM\n</Button>\n\n<Grid.Container points=\"2\" spacing=\"medium\">\n    {#if dom}\n        <Transition\n            animation=\"clip\"\n            direction=\"bottom\"\n            variation=\"enter\"\n        >\n            <Box palette=\"inverse\" padding=\"medium\">\n                hello world!\n            </Box>\n        </Transition>\n\n        <Transition\n            animation=\"clip\"\n            direction=\"bottom\"\n            variation=\"enter\"\n        >\n            <Box palette=\"inverse\" padding=\"medium\">\n                hello world!\n            </Box>\n        </Transition>\n\n        <Transition\n            animation=\"clip\"\n            delay={0.5}\n            direction=\"bottom\"\n            variation=\"enter\"\n        >\n            <Box palette=\"inverse\" padding=\"medium\">\n                hello world!\n            </Box>\n        </Transition>\n\n        <Transition\n            animation=\"clip\"\n            delay={0.5}\n            direction=\"bottom\"\n            variation=\"enter\"\n        >\n            <Box palette=\"inverse\" padding=\"medium\">\n                hello world!\n            </Box>\n        </Transition>\n\n        <Transition\n            animation=\"clip\"\n            delay={1.0}\n            direction=\"bottom\"\n            variation=\"enter\"\n        >\n            <Box palette=\"inverse\" padding=\"medium\">\n                hello world!\n            </Box>\n        </Transition>\n\n        <Transition\n            animation=\"clip\"\n            delay={1.0}\n            direction=\"bottom\"\n            variation=\"enter\"\n        >\n            <Box palette=\"inverse\" padding=\"medium\">\n                hello world!\n            </Box>\n        </Transition>\n\n        <Transition\n            animation=\"clip\"\n            delay={1.5}\n            direction=\"bottom\"\n            variation=\"enter\"\n        >\n            <Box palette=\"inverse\" padding=\"medium\">\n                hello world!\n            </Box>\n        </Transition>\n\n        <Transition\n            animation=\"clip\"\n            delay={1.5}\n            direction=\"bottom\"\n            variation=\"enter\"\n        >\n            <Box palette=\"inverse\" padding=\"medium\">\n                hello world!\n            </Box>\n        </Transition>\n    {/if}\n</Grid.Container>"},{"identifier":"/playground?snippet=transition-delay","title":"Transition Delay","text":"<script>\n    import {\n        Box,\n        Button,\n        Transition,\n    } from \"@kahi-ui/framework\";\n\n    let variation = undefined;\n</script>\n\n<Button\n    on:click={() =>\n        (variation =\n            variation === \"exit\" ? \"enter\" : \"exit\")}\n>\n    Toggle Variation\n</Button>\n\n<Transition animation=\"clip\" delay={1.25} {variation}>\n    <Box palette=\"inverse\" padding=\"medium\">\n        hello world!\n    </Box>\n</Transition>"},{"identifier":"/playground?snippet=transition-direction","title":"Transition Direction","text":"<script>\n    import {\n        Box,\n        Button,\n        Transition,\n    } from \"@kahi-ui/framework\";\n\n    let variation = undefined;\n</script>\n\n<Button\n    on:click={() =>\n        (variation =\n            variation === \"exit\" ? \"enter\" : \"exit\")}\n>\n    Toggle Variation\n</Button>\n\n<Transition\n    animation=\"clip\"\n    direction=\"right\"\n    {variation}\n>\n    <Box palette=\"inverse\" padding=\"medium\">\n        hello world!\n    </Box>\n</Transition>"},{"identifier":"/playground?snippet=transition-duration","title":"Transition Duration","text":"<script>\n    import {\n        Box,\n        Button,\n        Transition,\n    } from \"@kahi-ui/framework\";\n\n    let variation = undefined;\n</script>\n\n<Button\n    on:click={() =>\n        (variation =\n            variation === \"exit\" ? \"enter\" : \"exit\")}\n>\n    Toggle Variation\n</Button>\n\n<Transition\n    animation=\"clip\"\n    duration={0.25}\n    {variation}\n>\n    <Box palette=\"inverse\" padding=\"medium\">\n        hello world! (x0.25)\n    </Box>\n</Transition>\n\n<Transition animation=\"clip\" {variation}>\n    <Box palette=\"inverse\" padding=\"medium\">\n        hello world! (x1)\n    </Box>\n</Transition>\n\n<Transition\n    animation=\"clip\"\n    duration={1.75}\n    {variation}\n>\n    <Box palette=\"inverse\" padding=\"medium\">\n        hello world! (x1.75)\n    </Box>\n</Transition>\n\n<Transition\n    animation=\"clip\"\n    duration={2.5}\n    {variation}\n>\n    <Box palette=\"inverse\" padding=\"medium\">\n        hello world! (x2.5)\n    </Box>\n</Transition>\n\n<Transition\n    animation=\"clip\"\n    duration={3.25}\n    {variation}\n>\n    <Box palette=\"inverse\" padding=\"medium\">\n        hello world! (x3.25)\n    </Box>\n</Transition>"},{"identifier":"/playground?snippet=transition-elements","title":"Transition Elements","text":"<script>\n    import {\n        Box,\n        Button,\n        Stack,\n        Transition,\n    } from \"@kahi-ui/framework\";\n\n    let variation = undefined;\n</script>\n\n<Button\n    on:click={() =>\n        (variation =\n            variation === \"exit\" ? \"enter\" : \"exit\")}\n>\n    Toggle Variation\n</Button>\n\n<Stack.Container\n    spacing=\"medium\"\n    orientation=\"horizontal\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">DIV / BLOCK</Text>\n\n        <Transition\n            is=\"div\"\n            animation=\"clip\"\n            {variation}\n        >\n            <Box palette=\"inverse\" padding=\"medium\">\n                hello world!\n            </Box>\n        </Transition>\n    </div>\n\n    <div>\n        <Text is=\"strong\">SPAN / INLINE</Text>\n\n        <Transition\n            is=\"span\"\n            animation=\"clip\"\n            {variation}\n        >\n            <Box palette=\"inverse\" padding=\"medium\">\n                hello world!\n            </Box>\n        </Transition>\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=transition-explicit","title":"Transition Explicit","text":"<script>\n    import {\n        Box,\n        Button,\n        Transition,\n    } from \"@kahi-ui/framework\";\n\n    let variation = \"exit\";\n</script>\n\n<Button\n    on:click={() =>\n        (variation =\n            variation === \"exit\" ? \"enter\" : \"exit\")}\n>\n    Toggle Variation\n</Button>\n\n<Transition\n    animation=\"clip\"\n    behavior=\"explicit\"\n    {variation}\n>\n    <Box palette=\"inverse\" padding=\"medium\">\n        hello world!\n    </Box>\n</Transition>"},{"identifier":"/playground?snippet=transition-fade","title":"Transition Fade","text":"<script>\n    import {\n        Box,\n        Button,\n        Transition,\n    } from \"@kahi-ui/framework\";\n\n    let variation = undefined;\n</script>\n\n<Button\n    on:click={() =>\n        (variation =\n            variation === \"exit\" ? \"enter\" : \"exit\")}\n>\n    Toggle Variation\n</Button>\n\n<Transition animation=\"fade\" {variation}>\n    <Box palette=\"inverse\" padding=\"medium\">Fade</Box>\n</Transition>"},{"identifier":"/playground?snippet=transition-fade-dom","title":"Transition Fade DOM","text":"<script>\n    import {\n        Box,\n        Button,\n        Grid,\n        Transition,\n    } from \"@kahi-ui/framework\";\n\n    let dom = false;\n</script>\n\n<Button on:click={() => (dom = !dom)}>\n    Toggle DOM\n</Button>\n\n<Grid.Container points=\"2\" spacing=\"medium\">\n    {#if dom}\n        <Transition animation=\"fade\" variation=\"enter\">\n            <Box palette=\"inverse\" padding=\"medium\">\n                hello world!\n            </Box>\n        </Transition>\n\n        <Transition animation=\"fade\" variation=\"enter\">\n            <Box palette=\"inverse\" padding=\"medium\">\n                hello world!\n            </Box>\n        </Transition>\n\n        <Transition\n            animation=\"fade\"\n            delay={0.5}\n            variation=\"enter\"\n        >\n            <Box palette=\"inverse\" padding=\"medium\">\n                hello world!\n            </Box>\n        </Transition>\n\n        <Transition\n            animation=\"fade\"\n            delay={0.5}\n            variation=\"enter\"\n        >\n            <Box palette=\"inverse\" padding=\"medium\">\n                hello world!\n            </Box>\n        </Transition>\n\n        <Transition\n            animation=\"fade\"\n            delay={1.0}\n            variation=\"enter\"\n        >\n            <Box palette=\"inverse\" padding=\"medium\">\n                hello world!\n            </Box>\n        </Transition>\n\n        <Transition\n            animation=\"fade\"\n            delay={1.0}\n            variation=\"enter\"\n        >\n            <Box palette=\"inverse\" padding=\"medium\">\n                hello world!\n            </Box>\n        </Transition>\n\n        <Transition\n            animation=\"fade\"\n            delay={1.5}\n            variation=\"enter\"\n        >\n            <Box palette=\"inverse\" padding=\"medium\">\n                hello world!\n            </Box>\n        </Transition>\n\n        <Transition\n            animation=\"fade\"\n            delay={1.5}\n            variation=\"enter\"\n        >\n            <Box palette=\"inverse\" padding=\"medium\">\n                hello world!\n            </Box>\n        </Transition>\n    {/if}\n</Grid.Container>"},{"identifier":"/playground?snippet=transition-preview","title":"Transition Preview","text":"<script>\n    import {\n        Box,\n        Button,\n        Transition,\n    } from \"@kahi-ui/framework\";\n\n    let variation = undefined;\n</script>\n\n<Button\n    on:click={() =>\n        (variation =\n            variation === \"exit\" ? \"enter\" : \"exit\")}\n>\n    Toggle Variation\n</Button>\n\n<Transition animation=\"clip\" {variation}>\n    <Box palette=\"inverse\" padding=\"medium\">\n        hello world!\n    </Box>\n</Transition>"},{"identifier":"/playground?snippet=transition-scale","title":"Transition Scale","text":"<script>\n    import {\n        Box,\n        Button,\n        Grid,\n        Transition,\n    } from \"@kahi-ui/framework\";\n\n    let variation = undefined;\n</script>\n\n<Button\n    on:click={() =>\n        (variation =\n            variation === \"exit\" ? \"enter\" : \"exit\")}\n>\n    Toggle Variation\n</Button>\n\n<Grid.Container\n    points={[\"2\", \"mobile:1\"]}\n    spacing=\"medium\"\n>\n    <Transition animation=\"scale\" {variation}>\n        <Box palette=\"inverse\" padding=\"medium\">\n            Scale\n        </Box>\n    </Transition>\n</Grid.Container>"},{"identifier":"/playground?snippet=transition-scale-dom","title":"Transition Scale DOM","text":"<script>\n    import {\n        Box,\n        Button,\n        Grid,\n        Transition,\n    } from \"@kahi-ui/framework\";\n\n    let dom = false;\n</script>\n\n<Button on:click={() => (dom = !dom)}>\n    Toggle DOM\n</Button>\n\n<Grid.Container points=\"2\" spacing=\"medium\">\n    {#if dom}\n        <Transition\n            animation=\"scale\"\n            variation=\"enter\"\n        >\n            <Box palette=\"inverse\" padding=\"medium\">\n                hello world!\n            </Box>\n        </Transition>\n\n        <Transition\n            animation=\"scale\"\n            variation=\"enter\"\n        >\n            <Box palette=\"inverse\" padding=\"medium\">\n                hello world!\n            </Box>\n        </Transition>\n\n        <Transition\n            animation=\"scale\"\n            delay={0.5}\n            variation=\"enter\"\n        >\n            <Box palette=\"inverse\" padding=\"medium\">\n                hello world!\n            </Box>\n        </Transition>\n\n        <Transition\n            animation=\"scale\"\n            delay={0.5}\n            variation=\"enter\"\n        >\n            <Box palette=\"inverse\" padding=\"medium\">\n                hello world!\n            </Box>\n        </Transition>\n\n        <Transition\n            animation=\"scale\"\n            delay={1.0}\n            variation=\"enter\"\n        >\n            <Box palette=\"inverse\" padding=\"medium\">\n                hello world!\n            </Box>\n        </Transition>\n\n        <Transition\n            animation=\"scale\"\n            delay={1.0}\n            variation=\"enter\"\n        >\n            <Box palette=\"inverse\" padding=\"medium\">\n                hello world!\n            </Box>\n        </Transition>\n\n        <Transition\n            animation=\"scale\"\n            delay={1.5}\n            variation=\"enter\"\n        >\n            <Box palette=\"inverse\" padding=\"medium\">\n                hello world!\n            </Box>\n        </Transition>\n\n        <Transition\n            animation=\"scale\"\n            delay={1.5}\n            variation=\"enter\"\n        >\n            <Box palette=\"inverse\" padding=\"medium\">\n                hello world!\n            </Box>\n        </Transition>\n    {/if}\n</Grid.Container>"},{"identifier":"/playground?snippet=transition-slide","title":"Transition Slide","text":"<script>\n    import {\n        Box,\n        Button,\n        Grid,\n        Transition,\n    } from \"@kahi-ui/framework\";\n\n    let variation = undefined;\n</script>\n\n<Button\n    on:click={() =>\n        (variation =\n            variation === \"exit\" ? \"enter\" : \"exit\")}\n>\n    Toggle Variation\n</Button>\n\n<Grid.Container\n    points={[\"2\", \"mobile:1\"]}\n    spacing=\"medium\"\n>\n    <Transition\n        animation=\"slide\"\n        direction=\"bottom\"\n        {variation}\n    >\n        <Box palette=\"inverse\" padding=\"medium\">\n            Slide BOTTOM / DEFAULT\n        </Box>\n    </Transition>\n\n    <Transition\n        animation=\"slide\"\n        direction=\"left\"\n        {variation}\n    >\n        <Box palette=\"inverse\" padding=\"medium\">\n            Slide LEFT\n        </Box>\n    </Transition>\n\n    <Transition\n        animation=\"slide\"\n        direction=\"right\"\n        {variation}\n    >\n        <Box palette=\"inverse\" padding=\"medium\">\n            Slide RIGHT\n        </Box>\n    </Transition>\n\n    <Transition\n        animation=\"slide\"\n        direction=\"top\"\n        {variation}\n    >\n        <Box palette=\"inverse\" padding=\"medium\">\n            Slide TOP\n        </Box>\n    </Transition>\n</Grid.Container>"},{"identifier":"/playground?snippet=transition-slide-dom","title":"Transition Slide DOM","text":"<script>\n    import {\n        Box,\n        Button,\n        Grid,\n        Transition,\n    } from \"@kahi-ui/framework\";\n\n    let dom = false;\n</script>\n\n<Button on:click={() => (dom = !dom)}>\n    Toggle DOM\n</Button>\n\n<Grid.Container points=\"2\" spacing=\"medium\">\n    {#if dom}\n        <Transition\n            animation=\"slide\"\n            direction=\"bottom\"\n            variation=\"enter\"\n        >\n            <Box palette=\"inverse\" padding=\"medium\">\n                hello world!\n            </Box>\n        </Transition>\n\n        <Transition\n            animation=\"slide\"\n            direction=\"bottom\"\n            variation=\"enter\"\n        >\n            <Box palette=\"inverse\" padding=\"medium\">\n                hello world!\n            </Box>\n        </Transition>\n\n        <Transition\n            animation=\"slide\"\n            delay={0.5}\n            direction=\"bottom\"\n            variation=\"enter\"\n        >\n            <Box palette=\"inverse\" padding=\"medium\">\n                hello world!\n            </Box>\n        </Transition>\n\n        <Transition\n            animation=\"slide\"\n            delay={0.5}\n            direction=\"bottom\"\n            variation=\"enter\"\n        >\n            <Box palette=\"inverse\" padding=\"medium\">\n                hello world!\n            </Box>\n        </Transition>\n\n        <Transition\n            animation=\"slide\"\n            delay={1.0}\n            direction=\"bottom\"\n            variation=\"enter\"\n        >\n            <Box palette=\"inverse\" padding=\"medium\">\n                hello world!\n            </Box>\n        </Transition>\n\n        <Transition\n            animation=\"slide\"\n            delay={1.0}\n            direction=\"bottom\"\n            variation=\"enter\"\n        >\n            <Box palette=\"inverse\" padding=\"medium\">\n                hello world!\n            </Box>\n        </Transition>\n\n        <Transition\n            animation=\"slide\"\n            delay={1.5}\n            direction=\"bottom\"\n            variation=\"enter\"\n        >\n            <Box palette=\"inverse\" padding=\"medium\">\n                hello world!\n            </Box>\n        </Transition>\n\n        <Transition\n            animation=\"slide\"\n            delay={1.5}\n            direction=\"bottom\"\n            variation=\"enter\"\n        >\n            <Box palette=\"inverse\" padding=\"medium\">\n                hello world!\n            </Box>\n        </Transition>\n    {/if}\n</Grid.Container>"},{"identifier":"/playground?snippet=trap_focus-first--last","title":"trap_focus First + Last","text":"<script>\n    import {\n        Box,\n        Button,\n        Check,\n        trap_focus,\n    } from \"@kahi-ui/framework\";\n\n    let first_element;\n    let last_element;\n\n    let enabled = false;\n</script>\n\n<Box\n    palette={enabled ? \"affirmative\" : \"negative\"}\n    padding=\"small\"\n>\n    {enabled\n        ? \"unselect the checkbox to disabled focus trapping\"\n        : \"select the checkbox to enable focus trapping\"}\n</Box>\n\n<Check bind:state={enabled} />\n\n<div\n    use:trap_focus={{\n        first: first_element,\n        enabled,\n        last: last_element,\n    }}\n>\n    <Button tabindex=\"3\">Index #3</Button>\n\n    <Button bind:element={first_element} tabindex=\"1\">\n        Index #1\n    </Button>\n\n    <Button tabindex=\"5\" bind:element={last_element}\n        >Index #5</Button\n    >\n\n    <Button tabindex=\"4\">Index #4</Button>\n\n    <Button tabindex=\"2\">Index #2</Button>\n</div>"},{"identifier":"/playground?snippet=trap_focus-preview","title":"trap_focus Preview","text":"<script>\n    import {\n        Box,\n        Button,\n        Check,\n        trap_focus,\n    } from \"@kahi-ui/framework\";\n\n    let enabled = false;\n</script>\n\n<Box\n    palette={enabled ? \"affirmative\" : \"negative\"}\n    padding=\"small\"\n>\n    {enabled\n        ? \"unselect the checkbox to disabled focus trapping\"\n        : \"select the checkbox to enable focus trapping\"}\n</Box>\n\n<Check bind:state={enabled} />\n\n<div use:trap_focus={{enabled}}>\n    <Button tabindex=\"3\">Index #3</Button>\n    <Button tabindex=\"1\">Index #1</Button>\n    <Button tabindex=\"5\">Index #5</Button>\n    <Button tabindex=\"4\">Index #4</Button>\n    <Button tabindex=\"2\">Index #2</Button>\n</div>"},{"identifier":"/playground?snippet=viewport-preview","title":"viewport Preview","text":"<script>\n    import {\n        Code,\n        Heading,\n        Text,\n        viewport,\n        viewports,\n    } from \"@kahi-ui/framework\";\n\n    const mobile_store = viewport(\"mobile\");\n    const tablet_store = viewport(\"tablet\");\n\n    const desktop_store = viewport(\"desktop\");\n    const widescreen_store = viewport(\"widescreen\");\n\n    const combo_store = viewports({\n        mobile: true,\n        tablet: true,\n    });\n</script>\n\n<Heading>Viewports Enabled</Heading>\n\n<Text>Mobile: <Code>{$mobile_store}</Code></Text>\n<Text>Tablet: <Code>{$tablet_store}</Code></Text>\n\n<Text>Desktop: <Code>{$desktop_store}</Code></Text>\n<Text>\n    Widescreen: <Code>\n        {$widescreen_store}\n    </Code>\n</Text>\n\n<Text>Combo: <Code>{$combo_store}</Code></Text>"},{"identifier":"/playground?snippet=viewportrender-fallthrough","title":"ViewportRender Fallthrough","text":"<script>\n    import {\n        Box,\n        ViewportRender,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<ViewportRender mobile fallthrough>\n    <Box palette=\"affirmative\" padding=\"small\">\n        I am only visible on MOBILE Viewports!\n    </Box>\n</ViewportRender>"},{"identifier":"/playground?snippet=viewportrender-preview","title":"ViewportRender Preview","text":"<script>\n    import {\n        Box,\n        ViewportRender,\n    } from \"@kahi-ui/framework\";\n</script>\n\n<ViewportRender mobile tablet>\n    <Box palette=\"affirmative\" padding=\"small\">\n        I am only visible on MOBILE+TABLET Viewports!\n    </Box>\n</ViewportRender>\n\n<ViewportRender desktop widescreen>\n    <Box palette=\"negative\" padding=\"small\">\n        I am only visible on DESKTOP+WIDESCREEN\n        Viewports!\n    </Box>\n</ViewportRender>"},{"identifier":"/playground?snippet=yearpicker-custom-format","title":"YearPicker Custom Format","text":"<script>\n    import {YearPicker} from \"@kahi-ui/framework\";\n\n    const timestamp = \"2020-01-01\";\n</script>\n\n<YearPicker\n    palette=\"accent\"\n    year=\"2-digit\"\n    width=\"content-max\"\n    {timestamp}\n/>"},{"identifier":"/playground?snippet=yearpicker-disabled","title":"YearPicker Disabled","text":"<script>\n    import {YearPicker} from \"@kahi-ui/framework\";\n\n    const timestamp = \"2020-01-01\";\n</script>\n\n<YearPicker\n    palette=\"accent\"\n    width=\"content-max\"\n    {timestamp}\n    disabled\n/>"},{"identifier":"/playground?snippet=yearpicker-disabled-years","title":"YearPicker Disabled Years","text":"<script>\n    import {YearPicker} from \"@kahi-ui/framework\";\n\n    const timestamp = \"2020-01-01\";\n\n    const disabled = [\"2025-01-01\", \"2023-01-01\"];\n</script>\n\n<YearPicker\n    palette=\"accent\"\n    width=\"content-max\"\n    {disabled}\n    {timestamp}\n/>"},{"identifier":"/playground?snippet=yearpicker-highlight","title":"YearPicker Highlight","text":"<script>\n    import {YearPicker} from \"@kahi-ui/framework\";\n\n    const timestamp = \"2020-01-01\";\n\n    const highlight = [\n        \"2025-01-01\",\n        \"2026-01-01\",\n        \"2027-01-01\",\n    ];\n</script>\n\n<YearPicker\n    palette=\"accent\"\n    width=\"content-max\"\n    {highlight}\n    {timestamp}\n/>"},{"identifier":"/playground?snippet=yearpicker-maximum--minimum","title":"YearPicker Maximum + Minimum","text":"<script>\n    import {YearPicker} from \"@kahi-ui/framework\";\n\n    const timestamp = \"2020-01-01\";\n\n    const max = \"2025-01-01\";\n    const min = \"2023-01-01\";\n</script>\n\n<YearPicker\n    palette=\"accent\"\n    width=\"content-max\"\n    {max}\n    {min}\n    {timestamp}\n/>"},{"identifier":"/playground?snippet=yearpicker-multiple","title":"YearPicker Multiple","text":"<script>\n    import {YearPicker} from \"@kahi-ui/framework\";\n\n    const timestamp = \"2020-01-01\";\n    const value = [\"2025-01-01\", \"2023-01-01\"];\n</script>\n\n<YearPicker\n    palette=\"accent\"\n    width=\"content-max\"\n    {timestamp}\n    {value}\n    multiple\n/>"},{"identifier":"/playground?snippet=yearpicker-once","title":"YearPicker Once","text":"<script>\n    import {YearPicker} from \"@kahi-ui/framework\";\n\n    const timestamp = \"2020-01-01\";\n    const value = [\"2024-01-01\"];\n</script>\n\n<YearPicker\n    palette=\"accent\"\n    width=\"content-max\"\n    {timestamp}\n    {value}\n    once\n/>"},{"identifier":"/playground?snippet=yearpicker-preview","title":"YearPicker Preview","text":"<script>\n    import {YearPicker} from \"@kahi-ui/framework\";\n\n    const timestamp = \"2020-01-01\";\n    const value = [\"2024-01-01\"];\n</script>\n\n<YearPicker\n    palette=\"accent\"\n    width=\"content-max\"\n    {timestamp}\n    {value}\n/>"},{"identifier":"/playground?snippet=yearpicker-readonly","title":"YearPicker Readonly","text":"<script>\n    import {YearPicker} from \"@kahi-ui/framework\";\n\n    const timestamp = \"2020-01-01\";\n</script>\n\n<YearPicker\n    palette=\"accent\"\n    width=\"content-max\"\n    {timestamp}\n    readonly\n/>"},{"identifier":"/playground?snippet=yearpicker-sizing","title":"YearPicker Sizing","text":"<script>\n    import {\n        YearPicker,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n\n    const timestamp = \"2020-01-01\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    alignment_y=\"top\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n\n        <YearPicker\n            palette=\"accent\"\n            width=\"content-max\"\n            {timestamp}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">TINY</Text>\n\n        <YearPicker\n            palette=\"accent\"\n            sizing=\"tiny\"\n            width=\"content-max\"\n            {timestamp}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">SMALL</Text>\n\n        <YearPicker\n            palette=\"accent\"\n            sizing=\"small\"\n            width=\"content-max\"\n            {timestamp}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">MEDIUM</Text>\n\n        <YearPicker\n            palette=\"accent\"\n            sizing=\"medium\"\n            width=\"content-max\"\n            {timestamp}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">LARGE</Text>\n\n        <YearPicker\n            palette=\"accent\"\n            sizing=\"large\"\n            width=\"content-max\"\n            {timestamp}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">HUGE</Text>\n\n        <YearPicker\n            palette=\"accent\"\n            sizing=\"huge\"\n            width=\"content-max\"\n            {timestamp}\n        />\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=yearstepper-custom-format","title":"YearStepper Custom Format","text":"<script>\n    import {YearStepper} from \"@kahi-ui/framework\";\n\n    const value = \"2024-01-01\";\n</script>\n\n<YearStepper palette=\"accent\" year=\"2-digit\" {value} />"},{"identifier":"/playground?snippet=yearstepper-disabled","title":"YearStepper Disabled","text":"<script>\n    import {YearStepper} from \"@kahi-ui/framework\";\n\n    const value = \"2024-01-01\";\n</script>\n\n<YearStepper palette=\"accent\" {value} disabled />"},{"identifier":"/playground?snippet=yearstepper-maximum--minimum","title":"YearStepper Maximum + Minimum","text":"<script>\n    import {YearStepper} from \"@kahi-ui/framework\";\n\n    const value = \"2024-01-01\";\n\n    const max = \"2025-01-01\";\n    const min = \"2023-01-01\";\n</script>\n\n<YearStepper palette=\"accent\" {max} {min} {value} />"},{"identifier":"/playground?snippet=yearstepper-preview","title":"YearStepper Preview","text":"<script>\n    import {YearStepper} from \"@kahi-ui/framework\";\n\n    const value = \"2024-01-01\";\n</script>\n\n<YearStepper palette=\"accent\" {value} />"},{"identifier":"/playground?snippet=yearstepper-readonly","title":"YearStepper Readonly","text":"<script>\n    import {YearStepper} from \"@kahi-ui/framework\";\n\n    const value = \"2024-01-01\";\n</script>\n\n<YearStepper palette=\"accent\" {value} readonly />"},{"identifier":"/playground?snippet=yearstepper-sizing","title":"YearStepper Sizing","text":"<script>\n    import {\n        YearStepper,\n        Stack,\n        Text,\n    } from \"@kahi-ui/framework\";\n\n    const value = \"2024-01-01\";\n</script>\n\n<Stack.Container\n    orientation=\"horizontal\"\n    spacing=\"medium\"\n    alignment_y=\"top\"\n    variation=\"wrap\"\n>\n    <div>\n        <Text is=\"strong\">DEFAULT</Text>\n\n        <YearStepper palette=\"accent\" {value} />\n    </div>\n\n    <div>\n        <Text is=\"strong\">NANO</Text>\n\n        <YearStepper\n            palette=\"accent\"\n            sizing=\"nano\"\n            {value}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">TINY</Text>\n\n        <YearStepper\n            palette=\"accent\"\n            sizing=\"tiny\"\n            {value}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">SMALL</Text>\n\n        <YearStepper\n            palette=\"accent\"\n            sizing=\"small\"\n            {value}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">MEDIUM</Text>\n\n        <YearStepper\n            palette=\"accent\"\n            sizing=\"medium\"\n            {value}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">LARGE</Text>\n\n        <YearStepper\n            palette=\"accent\"\n            sizing=\"large\"\n            {value}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">HUGE</Text>\n\n        <YearStepper\n            palette=\"accent\"\n            sizing=\"huge\"\n            {value}\n        />\n    </div>\n\n    <div>\n        <Text is=\"strong\">MASSIVE</Text>\n\n        <YearStepper\n            palette=\"accent\"\n            sizing=\"massive\"\n            {value}\n        />\n    </div>\n</Stack.Container>"},{"identifier":"/playground?snippet=yearstepper-step","title":"YearStepper Step","text":"<script>\n    import {YearStepper} from \"@kahi-ui/framework\";\n\n    const value = \"2024-01-01\";\n</script>\n\n<YearStepper palette=\"accent\" steps={3} {value} />"},{"identifier":"/samples/calculator","title":"Calculator","text":"Calculator Sample code for a calculator. <script> import { Button, Grid, TextInput, Stack, keybind, } from \"@kahi-ui/framework\"; const ADD = [\"+\", (a, b) => a + b]; const SUBTRACT = [\"-\", (a, b) => a - b]; const MULTIPLY = [\"*\", (a, b) => a * b]; const DIVIDE = [\"/\", (a, b) => a / b]; let operations = [0]; function on_bind_entry(event, number) { event.preventDefault(); if (event.detail.active) on_entry(number); } function on_calculate() { let buffer = [...operations]; let next_value, previous_value, operation; while (buffer.length > 2) { [ previous_value, operation, next_value, ...buffer ] = buffer; buffer = [ Math.trunc( operation[1]( previous_value, next_value ) ), ...buffer, ]; } operations = buffer; } function on_clear() { operations = [0]; } function on_delete() { const current_index = operations.length - 1; const current_value = operations[current_index]; if (current_value instanceof Array) { operations = operations.slice(0, -1); } else { operations = [...operations]; operations[current_index] = parseInt( current_value .toString() .slice(0, -1) || \"0\" ); } } function on_entry(entry) { const current_index = operations.length - 1; if (operations[current_index] === 0) { operations = [...operations]; operations[current_index] = entry; } else { const current_value = operations[current_index]; if (current_value instanceof Array) operations = [...operations, entry]; else { operations = [...operations]; operations[current_index] = parseInt( `${current_value}${entry}` ); } } } function on_operation(operation) { const current_index = operations.length - 1; const current_value = operations[current_index]; if (current_value instanceof Array) { operations = [...operations]; operations[current_index] = operation; } else { operations = [...operations, operation]; } } $: _can_calculate = operations.length > 2; $: _display = operations .map((operation) => operation instanceof Array ? operation[0] : operation ) .join(\" \"); </script> <svelte:window use:keybind={{ binds: \"+\", on_bind: (event) => { event.preventDefault(); if (event.detail.active) on_operation(ADD); }, }} use:keybind={{ binds: \"-\", on_bind: (event) => { event.preventDefault(); if (event.detail.active) on_operation(SUBTRACT); }, }} use:keybind={{ binds: \"*\", on_bind: (event) => { event.preventDefault(); if (event.detail.active) on_operation(MULTIPLY); }, }} use:keybind={{ binds: \"/\", on_bind: (event) => { event.preventDefault(); if (event.detail.active) on_operation(DIVIDE); }, }} use:keybind={{ binds: \"0\", on_bind: (event) => on_bind_entry(event, 0), }} use:keybind={{ binds: \"1\", on_bind: (event) => on_bind_entry(event, 1), }} use:keybind={{ binds: \"2\", on_bind: (event) => on_bind_entry(event, 2), }} use:keybind={{ binds: \"3\", on_bind: (event) => on_bind_entry(event, 3), }} use:keybind={{ binds: \"4\", on_bind: (event) => on_bind_entry(event, 4), }} use:keybind={{ binds: \"5\", on_bind: (event) => on_bind_entry(event, 5), }} use:keybind={{ binds: \"6\", on_bind: (event) => on_bind_entry(event, 6), }} use:keybind={{ binds: \"7\", on_bind: (event) => on_bind_entry(event, 7), }} use:keybind={{ binds: \"8\", on_bind: (event) => on_bind_entry(event, 8), }} use:keybind={{ binds: \"9\", on_bind: (event) => on_bind_entry(event, 9), }} use:keybind={{ binds: [\"backspace\", \"delete\"], on_bind: (event) => { event.preventDefault(); if (event.detail.active) on_delete(); }, }} use:keybind={{ binds: [\"c\"], on_bind: (event) => { event.preventDefault(); if (event.detail.active) on_clear(); }, }} use:keybind={{ binds: [\"enter\", \"=\"], on_bind: (event) => { event.preventDefault(); if (event.detail.active && _can_calculate) on_calculate(); }, }} /> <Stack.Container spacing=\"small\" height=\"viewport-100\" max_height=\"100\" > <TextInput value={_display} radius=\"none\" sizing=\"huge\" readonly /> <Stack.Item variation=\"stretch\"> <Grid.Container points=\"4\" spacing=\"small\" padding=\"small\" > <Button palette=\"inverse\" sizing=\"large\" on:click={() => on_operation(ADD)} > &plus; </Button> <Button palette=\"inverse\" sizing=\"large\" on:click={() => on_operation(SUBTRACT)} > &minus; </Button> <Button palette=\"inverse\" sizing=\"large\" on:click={() => on_operation(MULTIPLY)} > &times; </Button> <Button palette=\"inverse\" sizing=\"large\" on:click={() => on_operation(DIVIDE)} > &divide; </Button> <Button sizing=\"large\" shape=\"pill\" on:click={() => on_entry(7)} > 7 </Button> <Button sizing=\"large\" shape=\"pill\" on:click={() => on_entry(8)} > 8 </Button> <Button sizing=\"large\" shape=\"pill\" on:click={() => on_entry(9)} > 9 </Button> <Grid.Item span_y=\"2\"> <Button sizing=\"large\" palette=\"negative\" on:click={() => on_clear()} > C </Button> </Grid.Item> <Button sizing=\"large\" shape=\"pill\" on:click={() => on_entry(4)} > 4 </Button> <Button sizing=\"large\" shape=\"pill\" on:click={() => on_entry(5)} > 5 </Button> <Button sizing=\"large\" shape=\"pill\" on:click={() => on_entry(6)} > 6 </Button> <Button sizing=\"large\" shape=\"pill\" on:click={() => on_entry(1)} > 1 </Button> <Button sizing=\"large\" shape=\"pill\" on:click={() => on_entry(2)} > 2 </Button> <Button sizing=\"large\" shape=\"pill\" on:click={() => on_entry(3)} > 3 </Button> <Grid.Item span_y=\"2\"> <Button disabled={!_can_calculate} sizing=\"large\" palette=\"accent\" on:click={() => on_calculate()} > &equals; </Button> </Grid.Item> <Grid.Item span_x=\"2\"> <Button sizing=\"large\" shape=\"pill\" on:click={() => on_entry(0)} > 0 </Button> </Grid.Item> <Button palette=\"negative\" sizing=\"large\" on:click={() => on_delete()} > DEL </Button> </Grid.Container> </Stack.Item> </Stack.Container> "}]}