alus-ui-mcp 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -20
- package/dist/index.js +468 -379
- package/package.json +3 -1
package/dist/index.js
CHANGED
|
@@ -5233,6 +5233,9 @@ var BUNDLED_DATA = {
|
|
|
5233
5233
|
let listEl = $state<HTMLUListElement | null>(null);
|
|
5234
5234
|
let highlighted = $state(0);
|
|
5235
5235
|
|
|
5236
|
+
// Seed the input value from an initially-provided selected option
|
|
5237
|
+
if (selected && !value) value = selected.label;
|
|
5238
|
+
|
|
5236
5239
|
const filtered = $derived.by(() => {
|
|
5237
5240
|
const q = value.trim().toLowerCase();
|
|
5238
5241
|
if (q.length < minLength) return [];
|
|
@@ -5546,7 +5549,7 @@ var BUNDLED_DATA = {
|
|
|
5546
5549
|
"files": {
|
|
5547
5550
|
"Calendar.svelte": `<script lang="ts" module>
|
|
5548
5551
|
import {
|
|
5549
|
-
CalendarDate,
|
|
5552
|
+
CalendarDate as CalendarDateImpl,
|
|
5550
5553
|
DateFormatter,
|
|
5551
5554
|
getDayOfWeek,
|
|
5552
5555
|
getLocalTimeZone,
|
|
@@ -5558,6 +5561,12 @@ var BUNDLED_DATA = {
|
|
|
5558
5561
|
type DateValue
|
|
5559
5562
|
} from '@internationalized/date';
|
|
5560
5563
|
|
|
5564
|
+
// Re-export CalendarDate through a local binding to satisfy no-import-assign
|
|
5565
|
+
const CalendarDate: typeof CalendarDateImpl = CalendarDateImpl;
|
|
5566
|
+
export { CalendarDate };
|
|
5567
|
+
// Declare DateValue locally to avoid no-import-assign false positive on re-export
|
|
5568
|
+
export type { DateValue }; // eslint-disable-line no-import-assign
|
|
5569
|
+
|
|
5561
5570
|
export interface CalendarDay {
|
|
5562
5571
|
date: DateValue;
|
|
5563
5572
|
jsDate: Date;
|
|
@@ -5569,8 +5578,6 @@ var BUNDLED_DATA = {
|
|
|
5569
5578
|
|
|
5570
5579
|
export type CalendarView = 'days' | 'months' | 'years';
|
|
5571
5580
|
|
|
5572
|
-
export { CalendarDate, type DateValue };
|
|
5573
|
-
|
|
5574
5581
|
function isoOf(d: DateValue) {
|
|
5575
5582
|
return \`\${d.year}-\${d.month}-\${d.day}\`;
|
|
5576
5583
|
}
|
|
@@ -5784,7 +5791,7 @@ var BUNDLED_DATA = {
|
|
|
5784
5791
|
}
|
|
5785
5792
|
|
|
5786
5793
|
function onDayKey(e: KeyboardEvent, d: DateValue) {
|
|
5787
|
-
let next: DateValue | null
|
|
5794
|
+
let next: DateValue | null;
|
|
5788
5795
|
switch (e.key) {
|
|
5789
5796
|
case 'ArrowLeft':
|
|
5790
5797
|
next = d.subtract({ days: 1 });
|
|
@@ -5908,7 +5915,7 @@ var BUNDLED_DATA = {
|
|
|
5908
5915
|
{#if view === 'days'}
|
|
5909
5916
|
<div role="grid" aria-label={ariaLabel} data-calendar={gridId} class={gridClass}>
|
|
5910
5917
|
<div role="row">
|
|
5911
|
-
{#each weekdays as wd}
|
|
5918
|
+
{#each weekdays as wd (wd)}
|
|
5912
5919
|
<div role="columnheader" aria-label={wd} class={weekdayClass}>{wd}</div>
|
|
5913
5920
|
{/each}
|
|
5914
5921
|
</div>
|
|
@@ -7800,7 +7807,7 @@ var BUNDLED_DATA = {
|
|
|
7800
7807
|
|
|
7801
7808
|
function onKeydown(e: KeyboardEvent) {
|
|
7802
7809
|
if (readonly || disabled) return;
|
|
7803
|
-
let next
|
|
7810
|
+
let next: number;
|
|
7804
7811
|
switch (e.key) {
|
|
7805
7812
|
case 'ArrowRight':
|
|
7806
7813
|
case 'ArrowUp':
|
|
@@ -7855,7 +7862,7 @@ var BUNDLED_DATA = {
|
|
|
7855
7862
|
onkeydown={onKeydown}
|
|
7856
7863
|
{...ariaAttrs}
|
|
7857
7864
|
>
|
|
7858
|
-
{#each Array(max
|
|
7865
|
+
{#each Array.from({ length: max }, (_, n) => n) as i (i)}
|
|
7859
7866
|
{@const idx = i + 1}
|
|
7860
7867
|
{@const filled = idx <= displayed}
|
|
7861
7868
|
<button
|
|
@@ -8842,7 +8849,7 @@ var BUNDLED_DATA = {
|
|
|
8842
8849
|
</div>
|
|
8843
8850
|
{/if}
|
|
8844
8851
|
`,
|
|
8845
|
-
"AccordionItem.svelte": "<script lang=\"ts\">\n import { getAccordionRoot, setAccordionItem } from './context.js';\n\n interface Props {\n children?: import('svelte').Snippet<[{ open: boolean }]>;\n value: string;\n disabled?: boolean;\n class?: string;\n }\n\n let { children, value, disabled = false, class: className = '' }: Props = $props();\n\n const root = getAccordionRoot();\n\n
|
|
8852
|
+
"AccordionItem.svelte": "<script lang=\"ts\">\n import { getAccordionRoot, setAccordionItem } from './context.js';\n\n interface Props {\n children?: import('svelte').Snippet<[{ open: boolean }]>;\n value: string;\n disabled?: boolean;\n class?: string;\n }\n\n let { children, value, disabled = false, class: className = '' }: Props = $props();\n\n const root = getAccordionRoot();\n\n setAccordionItem({\n get value() {\n return value;\n },\n disabled: () => disabled || root.disabled(),\n open: () => root.isOpen(value),\n get triggerId() {\n return `${root.baseId}-trigger-${value}`;\n },\n get contentId() {\n return `${root.baseId}-content-${value}`;\n }\n });\n\n let open = $derived(root.isOpen(value));\n</script>\n\n<div\n class={className}\n data-state={open ? 'open' : 'closed'}\n data-disabled={disabled || root.disabled() || undefined}\n>\n {#if children}{@render children({ open })}{/if}\n</div>\n",
|
|
8846
8853
|
"AccordionTrigger.svelte": `<script lang="ts">
|
|
8847
8854
|
import { getAccordionRoot, getAccordionItem } from './context.js';
|
|
8848
8855
|
import { interactiveStateAttrs, widgetAttrs, mergeAttrs } from '$utils/a11y/index.js';
|
|
@@ -9297,7 +9304,6 @@ var BUNDLED_DATA = {
|
|
|
9297
9304
|
</script>
|
|
9298
9305
|
|
|
9299
9306
|
{#if visible}
|
|
9300
|
-
<!-- svelte-ignore a11y_click_events_have_key_events -->
|
|
9301
9307
|
<div
|
|
9302
9308
|
{id}
|
|
9303
9309
|
role="option"
|
|
@@ -9419,7 +9425,7 @@ var BUNDLED_DATA = {
|
|
|
9419
9425
|
<a
|
|
9420
9426
|
{href}
|
|
9421
9427
|
target={newTab ? '_blank' : undefined}
|
|
9422
|
-
rel=
|
|
9428
|
+
rel="external noopener noreferrer"
|
|
9423
9429
|
class={className}
|
|
9424
9430
|
aria-label={ariaLabel}
|
|
9425
9431
|
aria-describedby={ariaDescribedby}
|
|
@@ -9479,7 +9485,6 @@ var BUNDLED_DATA = {
|
|
|
9479
9485
|
}: Props = $props();
|
|
9480
9486
|
|
|
9481
9487
|
let isExternal = $derived(external ?? (typeof href === 'string' && /^https?:\\/\\//i.test(href)));
|
|
9482
|
-
|
|
9483
9488
|
let computedTarget = $derived(target ?? (isExternal ? '_blank' : undefined));
|
|
9484
9489
|
let computedRel = $derived(rel ?? (isExternal ? 'noopener noreferrer' : undefined));
|
|
9485
9490
|
|
|
@@ -10245,9 +10250,9 @@ var BUNDLED_DATA = {
|
|
|
10245
10250
|
onkeydown={onPanelKey}
|
|
10246
10251
|
{@attach panelRef}
|
|
10247
10252
|
>
|
|
10248
|
-
{#each items as it, i}
|
|
10253
|
+
{#each items as it, i (i)}
|
|
10249
10254
|
{#if it.separator}
|
|
10250
|
-
<
|
|
10255
|
+
<hr class={separatorClass} />
|
|
10251
10256
|
{:else if item}
|
|
10252
10257
|
<!-- svelte-ignore a11y_click_events_have_key_events -->
|
|
10253
10258
|
<div
|
|
@@ -10574,7 +10579,7 @@ var BUNDLED_DATA = {
|
|
|
10574
10579
|
</script>
|
|
10575
10580
|
|
|
10576
10581
|
{#if open}
|
|
10577
|
-
<
|
|
10582
|
+
<section
|
|
10578
10583
|
{role}
|
|
10579
10584
|
aria-live={live ?? (role === 'alert' ? 'assertive' : role === 'status' ? 'polite' : undefined)}
|
|
10580
10585
|
data-variant={variant}
|
|
@@ -10591,7 +10596,7 @@ var BUNDLED_DATA = {
|
|
|
10591
10596
|
{#if dismissible}
|
|
10592
10597
|
<button type="button" aria-label="Dismiss banner" onclick={dismiss}>\xD7</button>
|
|
10593
10598
|
{/if}
|
|
10594
|
-
</
|
|
10599
|
+
</section>
|
|
10595
10600
|
{/if}
|
|
10596
10601
|
`,
|
|
10597
10602
|
"index.ts": "export { default as Banner } from './Banner.svelte';\n"
|
|
@@ -10971,7 +10976,7 @@ var BUNDLED_DATA = {
|
|
|
10971
10976
|
"slug": "tag",
|
|
10972
10977
|
"files": {
|
|
10973
10978
|
"Tag.svelte": `<script lang="ts">
|
|
10974
|
-
import { labelAttrs, interactiveStateAttrs,
|
|
10979
|
+
import { labelAttrs, interactiveStateAttrs, mergeAttrs } from '$utils/a11y/index.js';
|
|
10975
10980
|
|
|
10976
10981
|
interface Props {
|
|
10977
10982
|
children?: import('svelte').Snippet;
|
|
@@ -11498,7 +11503,6 @@ var BUNDLED_DATA = {
|
|
|
11498
11503
|
}
|
|
11499
11504
|
</script>
|
|
11500
11505
|
|
|
11501
|
-
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
|
11502
11506
|
<section
|
|
11503
11507
|
aria-roledescription="carousel"
|
|
11504
11508
|
class={className}
|
|
@@ -11569,7 +11573,7 @@ var BUNDLED_DATA = {
|
|
|
11569
11573
|
onkeydown={onKeydown}
|
|
11570
11574
|
bind:this={listEl}
|
|
11571
11575
|
>
|
|
11572
|
-
{#each Array(ctx.count()
|
|
11576
|
+
{#each Array.from({ length: ctx.count() }, (_, idx) => idx) as i (i)}
|
|
11573
11577
|
{@const active = ctx.index() === i}
|
|
11574
11578
|
<button
|
|
11575
11579
|
type="button"
|
|
@@ -11758,7 +11762,8 @@ var BUNDLED_DATA = {
|
|
|
11758
11762
|
class={lineNumbersClass}
|
|
11759
11763
|
aria-hidden="true"
|
|
11760
11764
|
data-line-numbers
|
|
11761
|
-
>{#each lines
|
|
11765
|
+
>{#each Array.from({ length: lines.length }, (_, n) => n) as i (i)}{i +
|
|
11766
|
+
1}{#if i < lines.length - 1}{/if}{/each}</span
|
|
11762
11767
|
><code class={codeClass}>{code}</code>{:else}<code class={codeClass}>{code}</code>{/if}</pre>
|
|
11763
11768
|
</div>
|
|
11764
11769
|
`,
|
|
@@ -11770,7 +11775,7 @@ var BUNDLED_DATA = {
|
|
|
11770
11775
|
"category": "display",
|
|
11771
11776
|
"slug": "compare",
|
|
11772
11777
|
"files": {
|
|
11773
|
-
"Compare.svelte": "<script lang=\"ts\">\n import type { Attachment } from 'svelte/attachments';\n import { labelAttrs, interactiveStateAttrs, widgetAttrs, mergeAttrs } from '$utils/a11y/index.js';\n\n interface Props {\n before: import('svelte').Snippet;\n after: import('svelte').Snippet;\n handle?: import('svelte').Snippet<[{ position: number; dragging: boolean }]>;\n position?: number;\n min?: number;\n max?: number;\n step?: number;\n largeStep?: number;\n orientation?: 'horizontal' | 'vertical';\n disabled?: boolean;\n class?: string;\n beforeClass?: string;\n afterClass?: string;\n handleClass?: string;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n 'aria-valuetext'?: string;\n onChange?: (position: number) => void;\n }\n\n let {\n before,\n after,\n handle,\n position = $bindable(50),\n min = 0,\n max = 100,\n step = 2,\n largeStep = 10,\n orientation = 'horizontal',\n disabled = false,\n class: className = '',\n beforeClass = '',\n afterClass = '',\n handleClass = '',\n 'aria-label': ariaLabel = 'Before and after comparison',\n 'aria-labelledby': ariaLabelledby,\n 'aria-valuetext': ariaValuetext,\n onChange\n }: Props = $props();\n\n let dragging = $state(false);\n let containerEl: HTMLElement | null = $state(null);\n let lastCoord = 0;\n let containerSize = 0;\n\n const horiz = $derived(orientation === 'horizontal');\n\n function clamp(v: number): number {\n return Math.min(max, Math.max(min, v));\n }\n\n function setPosition(v: number) {\n const next = clamp(v);\n if (next !== position) {\n position = next;\n onChange?.(next);\n }\n }\n\n const attach: Attachment<HTMLDivElement> = (node) => {\n containerEl = node;\n return () => {\n containerEl = null;\n };\n };\n\n function refreshSize() {\n if (!containerEl) {\n containerSize = 0;\n return;\n }\n const rect = containerEl.getBoundingClientRect();\n containerSize = horiz ? rect.width : rect.height;\n }\n\n function pointFromEvent(e: PointerEvent): number {\n return horiz ? e.clientX : e.clientY;\n }\n\n function pctFromAbsolute(e: PointerEvent): number {\n if (!containerEl) return position;\n const rect = containerEl.getBoundingClientRect();\n const offset = horiz ? e.clientX - rect.left : e.clientY - rect.top;\n const size = horiz ? rect.width : rect.height;\n if (size <= 0) return position;\n return (offset / size) * 100;\n }\n\n function onTrackPointerDown(e: PointerEvent) {\n if (disabled) return;\n e.preventDefault();\n dragging = true;\n refreshSize();\n lastCoord = pointFromEvent(e);\n setPosition(pctFromAbsolute(e));\n (e.currentTarget as HTMLElement).setPointerCapture(e.pointerId);\n }\n\n function onHandlePointerDown(e: PointerEvent) {\n if (disabled) return;\n e.preventDefault();\n e.stopPropagation();\n dragging = true;\n refreshSize();\n lastCoord = pointFromEvent(e);\n (e.currentTarget as HTMLElement).setPointerCapture(e.pointerId);\n }\n\n function onPointerMove(e: PointerEvent) {\n if (!dragging || containerSize <= 0) return;\n const cur = pointFromEvent(e);\n const deltaPx = cur - lastCoord;\n lastCoord = cur;\n if (deltaPx === 0) return;\n const deltaPct = (deltaPx / containerSize) * 100;\n setPosition(position + deltaPct);\n }\n\n function onPointerUp(e: PointerEvent) {\n if (!dragging) return;\n dragging = false;\n try {\n (e.currentTarget as HTMLElement).releasePointerCapture(e.pointerId);\n } catch {\n /* noop */\n }\n }\n\n function onKeydown(e: KeyboardEvent) {\n if (disabled) return;\n const incKey = horiz ? 'ArrowRight' : 'ArrowDown';\n const decKey = horiz ? 'ArrowLeft' : 'ArrowUp';\n
|
|
11778
|
+
"Compare.svelte": "<script lang=\"ts\">\n import type { Attachment } from 'svelte/attachments';\n import { labelAttrs, interactiveStateAttrs, widgetAttrs, mergeAttrs } from '$utils/a11y/index.js';\n\n interface Props {\n before: import('svelte').Snippet;\n after: import('svelte').Snippet;\n handle?: import('svelte').Snippet<[{ position: number; dragging: boolean }]>;\n position?: number;\n min?: number;\n max?: number;\n step?: number;\n largeStep?: number;\n orientation?: 'horizontal' | 'vertical';\n disabled?: boolean;\n class?: string;\n beforeClass?: string;\n afterClass?: string;\n handleClass?: string;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n 'aria-valuetext'?: string;\n onChange?: (position: number) => void;\n }\n\n let {\n before,\n after,\n handle,\n position = $bindable(50),\n min = 0,\n max = 100,\n step = 2,\n largeStep = 10,\n orientation = 'horizontal',\n disabled = false,\n class: className = '',\n beforeClass = '',\n afterClass = '',\n handleClass = '',\n 'aria-label': ariaLabel = 'Before and after comparison',\n 'aria-labelledby': ariaLabelledby,\n 'aria-valuetext': ariaValuetext,\n onChange\n }: Props = $props();\n\n let dragging = $state(false);\n let containerEl: HTMLElement | null = $state(null);\n let lastCoord = 0;\n let containerSize = 0;\n\n const horiz = $derived(orientation === 'horizontal');\n\n function clamp(v: number): number {\n return Math.min(max, Math.max(min, v));\n }\n\n function setPosition(v: number) {\n const next = clamp(v);\n if (next !== position) {\n position = next;\n onChange?.(next);\n }\n }\n\n const attach: Attachment<HTMLDivElement> = (node) => {\n containerEl = node;\n return () => {\n containerEl = null;\n };\n };\n\n function refreshSize() {\n if (!containerEl) {\n containerSize = 0;\n return;\n }\n const rect = containerEl.getBoundingClientRect();\n containerSize = horiz ? rect.width : rect.height;\n }\n\n function pointFromEvent(e: PointerEvent): number {\n return horiz ? e.clientX : e.clientY;\n }\n\n function pctFromAbsolute(e: PointerEvent): number {\n if (!containerEl) return position;\n const rect = containerEl.getBoundingClientRect();\n const offset = horiz ? e.clientX - rect.left : e.clientY - rect.top;\n const size = horiz ? rect.width : rect.height;\n if (size <= 0) return position;\n return (offset / size) * 100;\n }\n\n function onTrackPointerDown(e: PointerEvent) {\n if (disabled) return;\n e.preventDefault();\n dragging = true;\n refreshSize();\n lastCoord = pointFromEvent(e);\n setPosition(pctFromAbsolute(e));\n (e.currentTarget as HTMLElement).setPointerCapture(e.pointerId);\n }\n\n function onHandlePointerDown(e: PointerEvent) {\n if (disabled) return;\n e.preventDefault();\n e.stopPropagation();\n dragging = true;\n refreshSize();\n lastCoord = pointFromEvent(e);\n (e.currentTarget as HTMLElement).setPointerCapture(e.pointerId);\n }\n\n function onPointerMove(e: PointerEvent) {\n if (!dragging || containerSize <= 0) return;\n const cur = pointFromEvent(e);\n const deltaPx = cur - lastCoord;\n lastCoord = cur;\n if (deltaPx === 0) return;\n const deltaPct = (deltaPx / containerSize) * 100;\n setPosition(position + deltaPct);\n }\n\n function onPointerUp(e: PointerEvent) {\n if (!dragging) return;\n dragging = false;\n try {\n (e.currentTarget as HTMLElement).releasePointerCapture(e.pointerId);\n } catch {\n /* noop */\n }\n }\n\n function onKeydown(e: KeyboardEvent) {\n if (disabled) return;\n const incKey = horiz ? 'ArrowRight' : 'ArrowDown';\n const decKey = horiz ? 'ArrowLeft' : 'ArrowUp';\n if (e.key === 'Home') {\n e.preventDefault();\n setPosition(min);\n return;\n } else if (e.key === 'End') {\n e.preventDefault();\n setPosition(max);\n return;\n }\n let delta;\n if (e.key === incKey) delta = step;\n else if (e.key === decKey) delta = -step;\n else if (e.key === 'PageDown') delta = largeStep;\n else if (e.key === 'PageUp') delta = -largeStep;\n else return;\n e.preventDefault();\n setPosition(position + delta);\n }\n\n const afterClipStyle = $derived(\n horiz\n ? `clip-path:inset(0 ${100 - position}% 0 0);`\n : `clip-path:inset(0 0 ${100 - position}% 0);`\n );\n\n const handleStyle = $derived(\n horiz\n ? `left:${position}%;top:0;bottom:0;transform:translateX(-50%);`\n : `top:${position}%;left:0;right:0;transform:translateY(-50%);`\n );\n</script>\n\n<!-- svelte-ignore a11y_no_static_element_interactions -->\n<div\n {@attach attach}\n class={className}\n data-orientation={orientation}\n data-dragging={dragging || undefined}\n data-disabled={disabled || undefined}\n style=\"position:relative;overflow:hidden;touch-action:none;\"\n onpointerdown={onTrackPointerDown}\n onpointermove={onPointerMove}\n onpointerup={onPointerUp}\n onpointercancel={onPointerUp}\n>\n <div class={beforeClass} data-layer=\"before\" style=\"position:absolute;inset:0;\">\n {@render before()}\n </div>\n <div class={afterClass} data-layer=\"after\" style={`position:absolute;inset:0;${afterClipStyle}`}>\n {@render after()}\n </div>\n\n <div\n role=\"slider\"\n tabindex={disabled ? -1 : 0}\n data-dragging={dragging || undefined}\n data-orientation={orientation}\n class={handleClass}\n style={`position:absolute;${handleStyle}`}\n onpointerdown={onHandlePointerDown}\n onpointermove={onPointerMove}\n onpointerup={onPointerUp}\n onpointercancel={onPointerUp}\n onkeydown={onKeydown}\n {...mergeAttrs(\n labelAttrs({ label: ariaLabel, labelledby: ariaLabelledby }),\n interactiveStateAttrs({ disabled }),\n widgetAttrs({\n orientation,\n valuenow: Math.round(position),\n valuemin: min,\n valuemax: max,\n valuetext: ariaValuetext\n })\n )}\n >\n {#if handle}\n {@render handle({ position, dragging })}\n {/if}\n </div>\n</div>\n",
|
|
11774
11779
|
"index.ts": "export { default as Compare } from './Compare.svelte';\n"
|
|
11775
11780
|
}
|
|
11776
11781
|
},
|
|
@@ -11972,7 +11977,7 @@ var BUNDLED_DATA = {
|
|
|
11972
11977
|
|
|
11973
11978
|
{#if keys && keys.length > 0}
|
|
11974
11979
|
<kbd class={className} aria-label={ariaLabel ?? keys.join(' then ')}>
|
|
11975
|
-
{#each keys as key, i}
|
|
11980
|
+
{#each keys as key, i (i)}
|
|
11976
11981
|
<kbd>{key}</kbd>{#if i < keys.length - 1}<span aria-hidden="true">{separator}</span>{/if}
|
|
11977
11982
|
{/each}
|
|
11978
11983
|
</kbd>
|
|
@@ -12039,7 +12044,7 @@ var BUNDLED_DATA = {
|
|
|
12039
12044
|
"category": "display",
|
|
12040
12045
|
"slug": "stat-card",
|
|
12041
12046
|
"files": {
|
|
12042
|
-
"StatCard.svelte": "<script lang=\"ts\">\n import { generateCounterId } from '$utils/a11y/id.js';\n import { labelAttrs, mergeAttrs } from '$utils/a11y/index.js';\n\n type Trend = 'up' | 'down' | 'flat';\n\n interface Props {\n label: string;\n value: string | number;\n valueClass?: string;\n labelClass?: string;\n hint?: string;\n change?: string | number;\n trend?: Trend;\n icon?: import('svelte').Snippet;\n actions?: import('svelte').Snippet;\n change_snippet?: import('svelte').Snippet<[{ trend: Trend; change: string | number }]>;\n class?: string;\n hintClass?: string;\n changeClass?: string;\n 'aria-label'?: string;\n 'aria-describedby'?: string;\n }\n\n let {\n label,\n value,\n valueClass = '',\n labelClass = '',\n hint,\n change,\n trend,\n icon,\n actions,\n change_snippet,\n class: className = '',\n hintClass = '',\n changeClass = '',\n 'aria-label': ariaLabel,\n 'aria-describedby': ariaDescribedby\n }: Props = $props();\n\n const labelId = generateCounterId('stat-label');\n const valueId = generateCounterId('stat-value');\n\n const trendText = $derived(trend === 'up' ? ' increased' : trend === 'down' ? ' decreased' : '');\n const inferredLabel = $derived(`${label}: ${value}${trendText}`);\n</script>\n\n<
|
|
12047
|
+
"StatCard.svelte": "<script lang=\"ts\">\n import { generateCounterId } from '$utils/a11y/id.js';\n import { labelAttrs, mergeAttrs } from '$utils/a11y/index.js';\n\n type Trend = 'up' | 'down' | 'flat';\n\n interface Props {\n label: string;\n value: string | number;\n valueClass?: string;\n labelClass?: string;\n hint?: string;\n change?: string | number;\n trend?: Trend;\n icon?: import('svelte').Snippet;\n actions?: import('svelte').Snippet;\n change_snippet?: import('svelte').Snippet<[{ trend: Trend; change: string | number }]>;\n class?: string;\n hintClass?: string;\n changeClass?: string;\n 'aria-label'?: string;\n 'aria-describedby'?: string;\n }\n\n let {\n label,\n value,\n valueClass = '',\n labelClass = '',\n hint,\n change,\n trend,\n icon,\n actions,\n change_snippet,\n class: className = '',\n hintClass = '',\n changeClass = '',\n 'aria-label': ariaLabel,\n 'aria-describedby': ariaDescribedby\n }: Props = $props();\n\n const labelId = generateCounterId('stat-label');\n const valueId = generateCounterId('stat-value');\n\n const trendText = $derived(trend === 'up' ? ' increased' : trend === 'down' ? ' decreased' : '');\n const inferredLabel = $derived(`${label}: ${value}${trendText}`);\n</script>\n\n<article\n class={className}\n data-trend={trend}\n {...mergeAttrs(\n labelAttrs({\n label: ariaLabel,\n labelledby: labelId,\n describedby: ariaDescribedby ?? valueId\n })\n )}\n>\n {#if icon}{@render icon()}{/if}\n <div>\n <div id={labelId} class={labelClass}>{label}</div>\n <div id={valueId} class={valueClass} {...labelAttrs({ label: inferredLabel })}>{value}</div>\n {#if change !== undefined}\n {#if change_snippet}\n {@render change_snippet({ trend: trend ?? 'flat', change })}\n {:else}\n <div class={changeClass} data-trend={trend}>{change}</div>\n {/if}\n {/if}\n {#if hint}<div class={hintClass}>{hint}</div>{/if}\n </div>\n {#if actions}{@render actions()}{/if}\n</article>\n",
|
|
12043
12048
|
"index.ts": "export { default as StatCard } from './StatCard.svelte';\n"
|
|
12044
12049
|
}
|
|
12045
12050
|
},
|
|
@@ -12278,8 +12283,6 @@ var BUNDLED_DATA = {
|
|
|
12278
12283
|
const hasChildren = $derived(!!children);
|
|
12279
12284
|
const expanded = $derived(ctx.isExpanded(id));
|
|
12280
12285
|
const selected = $derived(ctx.isSelected(id));
|
|
12281
|
-
const focused = $derived(ctx.focused() === id);
|
|
12282
|
-
|
|
12283
12286
|
let itemEl = $state<HTMLLIElement | null>(null);
|
|
12284
12287
|
|
|
12285
12288
|
function onClick(e: MouseEvent) {
|
|
@@ -12302,7 +12305,6 @@ var BUNDLED_DATA = {
|
|
|
12302
12305
|
}
|
|
12303
12306
|
</script>
|
|
12304
12307
|
|
|
12305
|
-
<!-- svelte-ignore a11y_click_events_have_key_events -->
|
|
12306
12308
|
<li
|
|
12307
12309
|
bind:this={itemEl}
|
|
12308
12310
|
role="treeitem"
|
|
@@ -12726,7 +12728,7 @@ var BUNDLED_DATA = {
|
|
|
12726
12728
|
onkeydown={onMenuKey}
|
|
12727
12729
|
{@attach menuRef}
|
|
12728
12730
|
>
|
|
12729
|
-
{#each items as it, i}
|
|
12731
|
+
{#each items as it, i (i)}
|
|
12730
12732
|
{#if it.separator}
|
|
12731
12733
|
<div role="separator" class={separatorClass}></div>
|
|
12732
12734
|
{:else if item}
|
|
@@ -13939,7 +13941,6 @@ var BUNDLED_DATA = {
|
|
|
13939
13941
|
}
|
|
13940
13942
|
</script>
|
|
13941
13943
|
|
|
13942
|
-
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
|
13943
13944
|
{#if as === 'span'}
|
|
13944
13945
|
<span
|
|
13945
13946
|
class={className}
|
|
@@ -14240,7 +14241,7 @@ var BUNDLED_DATA = {
|
|
|
14240
14241
|
"category": "interactive",
|
|
14241
14242
|
"slug": "resizable",
|
|
14242
14243
|
"files": {
|
|
14243
|
-
"Resizable.svelte": "<script lang=\"ts\">\n import { labelAttrs, interactiveStateAttrs, widgetAttrs, mergeAttrs } from '$utils/a11y/index.js';\n\n type Side = 'right' | 'bottom' | 'left' | 'top';\n\n interface Props {\n children?: import('svelte').Snippet;\n size?: number;\n minSize?: number;\n maxSize?: number;\n side?: Side;\n step?: number;\n largeStep?: number;\n disabled?: boolean;\n class?: string;\n handleClass?: string;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n onResize?: (size: number) => void;\n }\n\n let {\n children,\n size = $bindable(200),\n minSize = 50,\n maxSize = Number.POSITIVE_INFINITY,\n side = 'right',\n step = 8,\n largeStep = 32,\n disabled = false,\n class: className = '',\n handleClass = '',\n 'aria-label': ariaLabel = 'Resize',\n 'aria-labelledby': ariaLabelledby,\n onResize\n }: Props = $props();\n\n const axis = $derived<'x' | 'y'>(side === 'left' || side === 'right' ? 'x' : 'y');\n const orientation = $derived<'vertical' | 'horizontal'>(axis === 'x' ? 'vertical' : 'horizontal');\n\n let dragging = $state(false);\n let lastCoord = 0;\n\n function clamp(v: number): number {\n const max = Number.isFinite(maxSize) ? maxSize : v;\n return Math.min(max, Math.max(minSize, v));\n }\n\n function commit(v: number) {\n const next = clamp(v);\n if (next !== size) {\n size = next;\n onResize?.(next);\n }\n }\n\n function onPointerDown(e: PointerEvent) {\n if (disabled) return;\n e.preventDefault();\n dragging = true;\n lastCoord = axis === 'x' ? e.clientX : e.clientY;\n (e.currentTarget as HTMLElement).setPointerCapture(e.pointerId);\n }\n\n function onPointerMove(e: PointerEvent) {\n if (!dragging) return;\n const cur = axis === 'x' ? e.clientX : e.clientY;\n let delta = cur - lastCoord;\n if (side === 'left' || side === 'top') delta = -delta;\n lastCoord = cur;\n if (delta === 0) return;\n commit(size + delta);\n }\n\n function onPointerUp(e: PointerEvent) {\n if (!dragging) return;\n dragging = false;\n try {\n (e.currentTarget as HTMLElement).releasePointerCapture(e.pointerId);\n } catch {\n /* noop */\n }\n }\n\n function onKeydown(e: KeyboardEvent) {\n if (disabled) return;\n const incKey = axis === 'x' ? 'ArrowRight' : 'ArrowDown';\n const decKey = axis === 'x' ? 'ArrowLeft' : 'ArrowUp';\n
|
|
14244
|
+
"Resizable.svelte": "<script lang=\"ts\">\n import { labelAttrs, interactiveStateAttrs, widgetAttrs, mergeAttrs } from '$utils/a11y/index.js';\n\n type Side = 'right' | 'bottom' | 'left' | 'top';\n\n interface Props {\n children?: import('svelte').Snippet;\n size?: number;\n minSize?: number;\n maxSize?: number;\n side?: Side;\n step?: number;\n largeStep?: number;\n disabled?: boolean;\n class?: string;\n handleClass?: string;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n onResize?: (size: number) => void;\n }\n\n let {\n children,\n size = $bindable(200),\n minSize = 50,\n maxSize = Number.POSITIVE_INFINITY,\n side = 'right',\n step = 8,\n largeStep = 32,\n disabled = false,\n class: className = '',\n handleClass = '',\n 'aria-label': ariaLabel = 'Resize',\n 'aria-labelledby': ariaLabelledby,\n onResize\n }: Props = $props();\n\n const axis = $derived<'x' | 'y'>(side === 'left' || side === 'right' ? 'x' : 'y');\n const orientation = $derived<'vertical' | 'horizontal'>(axis === 'x' ? 'vertical' : 'horizontal');\n\n let dragging = $state(false);\n let lastCoord = 0;\n\n function clamp(v: number): number {\n const max = Number.isFinite(maxSize) ? maxSize : v;\n return Math.min(max, Math.max(minSize, v));\n }\n\n function commit(v: number) {\n const next = clamp(v);\n if (next !== size) {\n size = next;\n onResize?.(next);\n }\n }\n\n function onPointerDown(e: PointerEvent) {\n if (disabled) return;\n e.preventDefault();\n dragging = true;\n lastCoord = axis === 'x' ? e.clientX : e.clientY;\n (e.currentTarget as HTMLElement).setPointerCapture(e.pointerId);\n }\n\n function onPointerMove(e: PointerEvent) {\n if (!dragging) return;\n const cur = axis === 'x' ? e.clientX : e.clientY;\n let delta = cur - lastCoord;\n if (side === 'left' || side === 'top') delta = -delta;\n lastCoord = cur;\n if (delta === 0) return;\n commit(size + delta);\n }\n\n function onPointerUp(e: PointerEvent) {\n if (!dragging) return;\n dragging = false;\n try {\n (e.currentTarget as HTMLElement).releasePointerCapture(e.pointerId);\n } catch {\n /* noop */\n }\n }\n\n function onKeydown(e: KeyboardEvent) {\n if (disabled) return;\n const incKey = axis === 'x' ? 'ArrowRight' : 'ArrowDown';\n const decKey = axis === 'x' ? 'ArrowLeft' : 'ArrowUp';\n if (e.key === 'Home') {\n e.preventDefault();\n commit(minSize);\n return;\n } else if (e.key === 'End') {\n e.preventDefault();\n if (Number.isFinite(maxSize)) commit(maxSize);\n return;\n }\n let delta;\n if (e.key === incKey) delta = step;\n else if (e.key === decKey) delta = -step;\n else if (e.key === 'PageDown') delta = largeStep;\n else if (e.key === 'PageUp') delta = -largeStep;\n else return;\n\n e.preventDefault();\n commit(size + delta);\n }\n\n const containerStyle = $derived(axis === 'x' ? `width:${size}px` : `height:${size}px`);\n</script>\n\n<div\n class={className}\n style={containerStyle}\n data-side={side}\n data-dragging={dragging || undefined}\n>\n {#if children}{@render children()}{/if}\n <!-- svelte-ignore a11y_no_noninteractive_tabindex -->\n <div\n role=\"separator\"\n tabindex={disabled ? -1 : 0}\n data-dragging={dragging || undefined}\n data-side={side}\n class={handleClass}\n onpointerdown={onPointerDown}\n onpointermove={onPointerMove}\n onpointerup={onPointerUp}\n onpointercancel={onPointerUp}\n onkeydown={onKeydown}\n {...mergeAttrs(\n labelAttrs({ label: ariaLabel, labelledby: ariaLabelledby }),\n interactiveStateAttrs({ disabled }),\n widgetAttrs({\n orientation,\n valuenow: size,\n valuemin: minSize,\n valuemax: Number.isFinite(maxSize) ? maxSize : undefined\n })\n )}\n ></div>\n</div>\n",
|
|
14244
14245
|
"index.ts": "export { default as Resizable } from './Resizable.svelte';\n"
|
|
14245
14246
|
}
|
|
14246
14247
|
},
|
|
@@ -14561,7 +14562,7 @@ var BUNDLED_DATA = {
|
|
|
14561
14562
|
{#if children}{@render children()}{/if}
|
|
14562
14563
|
</div>
|
|
14563
14564
|
`,
|
|
14564
|
-
"SplitViewHandle.svelte": "<script lang=\"ts\">\n import type { Attachment } from 'svelte/attachments';\n import { getSplitViewContext } from './SplitView.svelte';\n import { labelAttrs, interactiveStateAttrs, widgetAttrs, mergeAttrs } from '$utils/a11y/index.js';\n\n interface Props {\n class?: string;\n step?: number;\n largeStep?: number;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n }\n\n let {\n class: className = '',\n step = 2,\n largeStep = 10,\n 'aria-label': ariaLabel = 'Resize panes',\n 'aria-labelledby': ariaLabelledby\n }: Props = $props();\n\n const ctx = getSplitViewContext();\n let handleEl: HTMLElement | null = $state(null);\n let lastCoord = 0;\n let containerSize = 0;\n\n function findContainer(node: HTMLElement): HTMLElement {\n return (node.parentElement as HTMLElement) ?? node;\n }\n\n const attach: Attachment<HTMLDivElement> = (node) => {\n handleEl = node;\n return () => {\n handleEl = null;\n };\n };\n\n function onPointerDown(e: PointerEvent) {\n if (ctx.disabled()) return;\n e.preventDefault();\n ctx.setDragging(true);\n const horiz = ctx.orientation() === 'horizontal';\n lastCoord = horiz ? e.clientX : e.clientY;\n const container = handleEl ? findContainer(handleEl) : null;\n const rect = container?.getBoundingClientRect();\n containerSize = rect ? (horiz ? rect.width : rect.height) : 0;\n (e.currentTarget as HTMLElement).setPointerCapture(e.pointerId);\n }\n\n function onPointerMove(e: PointerEvent) {\n if (!ctx.dragging()) return;\n if (containerSize <= 0) return;\n const horiz = ctx.orientation() === 'horizontal';\n const cur = horiz ? e.clientX : e.clientY;\n const deltaPx = cur - lastCoord;\n lastCoord = cur;\n if (deltaPx === 0) return;\n const deltaPct = (deltaPx / containerSize) * 100;\n ctx.setSize(ctx.size() + deltaPct);\n }\n\n function onPointerUp(e: PointerEvent) {\n if (!ctx.dragging()) return;\n ctx.setDragging(false);\n try {\n (e.currentTarget as HTMLElement).releasePointerCapture(e.pointerId);\n } catch {\n /* noop */\n }\n }\n\n function onKeydown(e: KeyboardEvent) {\n if (ctx.disabled()) return;\n const horiz = ctx.orientation() === 'horizontal';\n const incKey = horiz ? 'ArrowRight' : 'ArrowDown';\n const decKey = horiz ? 'ArrowLeft' : 'ArrowUp';\n
|
|
14565
|
+
"SplitViewHandle.svelte": "<script lang=\"ts\">\n import type { Attachment } from 'svelte/attachments';\n import { getSplitViewContext } from './SplitView.svelte';\n import { labelAttrs, interactiveStateAttrs, widgetAttrs, mergeAttrs } from '$utils/a11y/index.js';\n\n interface Props {\n class?: string;\n step?: number;\n largeStep?: number;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n }\n\n let {\n class: className = '',\n step = 2,\n largeStep = 10,\n 'aria-label': ariaLabel = 'Resize panes',\n 'aria-labelledby': ariaLabelledby\n }: Props = $props();\n\n const ctx = getSplitViewContext();\n let handleEl: HTMLElement | null = $state(null);\n let lastCoord = 0;\n let containerSize = 0;\n\n function findContainer(node: HTMLElement): HTMLElement {\n return (node.parentElement as HTMLElement) ?? node;\n }\n\n const attach: Attachment<HTMLDivElement> = (node) => {\n handleEl = node;\n return () => {\n handleEl = null;\n };\n };\n\n function onPointerDown(e: PointerEvent) {\n if (ctx.disabled()) return;\n e.preventDefault();\n ctx.setDragging(true);\n const horiz = ctx.orientation() === 'horizontal';\n lastCoord = horiz ? e.clientX : e.clientY;\n const container = handleEl ? findContainer(handleEl) : null;\n const rect = container?.getBoundingClientRect();\n containerSize = rect ? (horiz ? rect.width : rect.height) : 0;\n (e.currentTarget as HTMLElement).setPointerCapture(e.pointerId);\n }\n\n function onPointerMove(e: PointerEvent) {\n if (!ctx.dragging()) return;\n if (containerSize <= 0) return;\n const horiz = ctx.orientation() === 'horizontal';\n const cur = horiz ? e.clientX : e.clientY;\n const deltaPx = cur - lastCoord;\n lastCoord = cur;\n if (deltaPx === 0) return;\n const deltaPct = (deltaPx / containerSize) * 100;\n ctx.setSize(ctx.size() + deltaPct);\n }\n\n function onPointerUp(e: PointerEvent) {\n if (!ctx.dragging()) return;\n ctx.setDragging(false);\n try {\n (e.currentTarget as HTMLElement).releasePointerCapture(e.pointerId);\n } catch {\n /* noop */\n }\n }\n\n function onKeydown(e: KeyboardEvent) {\n if (ctx.disabled()) return;\n const horiz = ctx.orientation() === 'horizontal';\n const incKey = horiz ? 'ArrowRight' : 'ArrowDown';\n const decKey = horiz ? 'ArrowLeft' : 'ArrowUp';\n if (e.key === 'Home') {\n e.preventDefault();\n ctx.setSize(ctx.min());\n return;\n } else if (e.key === 'End') {\n e.preventDefault();\n ctx.setSize(ctx.max());\n return;\n }\n let delta;\n if (e.key === incKey) delta = step;\n else if (e.key === decKey) delta = -step;\n else if (e.key === 'PageDown') delta = largeStep;\n else if (e.key === 'PageUp') delta = -largeStep;\n else return;\n e.preventDefault();\n ctx.setSize(ctx.size() + delta);\n }\n</script>\n\n<!-- svelte-ignore a11y_no_noninteractive_tabindex -->\n<div\n {@attach attach}\n role=\"separator\"\n tabindex={ctx.disabled() ? -1 : 0}\n data-dragging={ctx.dragging() || undefined}\n data-orientation={ctx.orientation()}\n class={className}\n onpointerdown={onPointerDown}\n onpointermove={onPointerMove}\n onpointerup={onPointerUp}\n onpointercancel={onPointerUp}\n onkeydown={onKeydown}\n {...mergeAttrs(\n labelAttrs({ label: ariaLabel, labelledby: ariaLabelledby }),\n interactiveStateAttrs({ disabled: ctx.disabled() }),\n widgetAttrs({\n orientation: ctx.orientation() === 'horizontal' ? 'vertical' : 'horizontal',\n valuenow: Math.round(ctx.size()),\n valuemin: ctx.min(),\n valuemax: ctx.max(),\n controls: `${ctx.firstPaneId} ${ctx.secondPaneId}`\n })\n )}\n></div>\n",
|
|
14565
14566
|
"SplitViewPane.svelte": "<script lang=\"ts\">\n import { getSplitViewContext } from './SplitView.svelte';\n import { labelAttrs } from '$utils/a11y/index.js';\n\n interface Props {\n children?: import('svelte').Snippet;\n side: 'first' | 'second';\n class?: string;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n }\n\n let {\n children,\n side,\n class: className = '',\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby\n }: Props = $props();\n\n const ctx = getSplitViewContext();\n\n const paneStyle = $derived.by(() => {\n const horiz = ctx.orientation() === 'horizontal';\n const size = ctx.size();\n const dim = horiz ? 'width' : 'height';\n const value = side === 'first' ? `${size}%` : `${100 - size}%`;\n return `${dim}:${value};flex:0 0 ${value};`;\n });\n\n const paneId = $derived(side === 'first' ? ctx.firstPaneId : ctx.secondPaneId);\n</script>\n\n<div\n id={paneId}\n role=\"group\"\n data-side={side}\n class={className}\n style={paneStyle}\n {...labelAttrs({ label: ariaLabel, labelledby: ariaLabelledby })}\n>\n {#if children}{@render children()}{/if}\n</div>\n",
|
|
14566
14567
|
"index.ts": "export { default as SplitView } from './SplitView.svelte';\nexport { default as SplitViewPane } from './SplitViewPane.svelte';\nexport { default as SplitViewHandle } from './SplitViewHandle.svelte';\nexport { getSplitViewContext, setSplitViewContext } from './SplitView.svelte';\nexport type { SplitViewContext } from './SplitView.svelte';\n"
|
|
14567
14568
|
}
|
|
@@ -14918,13 +14919,14 @@ var BUNDLED_DATA = {
|
|
|
14918
14919
|
],
|
|
14919
14920
|
files: {
|
|
14920
14921
|
"components/index.ts": "/**\n * UI Components\n * @module components\n */\n\n// Form Components\nexport { Button } from './form/button/index.js';\nexport { Input } from './form/input/index.js';\nexport { Checkbox } from './form/checkbox/index.js';\nexport { Radio } from './form/radio/index.js';\nexport { Textarea } from './form/textarea/index.js';\nexport {\n Select,\n SelectTrigger,\n SelectContent,\n SelectOption,\n getSelectContext,\n setSelectContext\n} from './form/select/index.js';\nexport type { SelectContext, SelectOptionEntry } from './form/select/index.js';\nexport { Fieldset } from './form/fieldset/index.js';\nexport { RadioGroup, getRadioGroup, setRadioGroup } from './form/radio-group/index.js';\nexport type { RadioGroupContext } from './form/radio-group/index.js';\nexport { Form } from './form/form/index.js';\nexport { FieldError } from './form/field-error/index.js';\nexport { Label } from './form/label/index.js';\nexport { Switch } from './form/switch/index.js';\nexport { Slider } from './form/slider/index.js';\nexport { FileInput } from './form/file-input/index.js';\nexport { SearchInput } from './form/search-input/index.js';\nexport { NumberInput } from './form/number-input/index.js';\nexport { InputGroup, InputAddon } from './form/input-group/index.js';\nexport { Rating } from './form/rating/index.js';\nexport { IconButton } from './form/icon-button/index.js';\nexport { ToggleButton } from './form/toggle-button/index.js';\nexport { AutoComplete } from './form/auto-complete/index.js';\nexport type { AutoCompleteOption } from './form/auto-complete/index.js';\nexport { Calendar } from './form/calendar/index.js';\nexport type { CalendarDay, CalendarView } from './form/calendar/index.js';\nexport { DatePicker } from './form/date-picker/index.js';\nexport { DateRange } from './form/date-range/index.js';\nexport type { DateRangeValue } from './form/date-range/index.js';\nexport { DateRangePicker } from './form/date-range-picker/index.js';\nexport { TimePicker } from './form/time-picker/index.js';\nexport type { Time } from './form/time-picker/index.js';\nexport { ColorPicker } from './form/color-picker/index.js';\n\n// Navigation Components\nexport {\n Tabs,\n TabList,\n Tab,\n TabPanel,\n getTabsContext,\n setTabsContext\n} from './navigation/tabs/index.js';\nexport type { TabsContext } from './navigation/tabs/index.js';\nexport {\n Accordion,\n AccordionItem,\n AccordionTrigger,\n AccordionContent,\n getAccordionRoot,\n setAccordionRoot,\n getAccordionItem,\n setAccordionItem\n} from './navigation/accordion/index.js';\nexport type {\n AccordionRootContext,\n AccordionItemContext,\n AccordionType\n} from './navigation/accordion/index.js';\nexport { Breadcrumb, BreadcrumbItem, BreadcrumbSeparator } from './navigation/breadcrumb/index.js';\nexport { Pagination } from './navigation/pagination/index.js';\nexport { Link } from './navigation/link/index.js';\nexport { ExternalLink } from './navigation/external-link/index.js';\nexport { Navigation } from './navigation/navigation/index.js';\nexport { SubMenu } from './navigation/sub-menu/index.js';\nexport type { SubMenuItem } from './navigation/sub-menu/index.js';\nexport {\n Menu,\n MenuTrigger,\n MenuContent,\n MenuItem,\n getMenuContext,\n setMenuContext\n} from './navigation/menu/index.js';\nexport type { MenuContext, MenuItemEntry } from './navigation/menu/index.js';\nexport {\n Stepper,\n StepperStep,\n getStepperContext,\n setStepperContext\n} from './navigation/stepper/index.js';\nexport type { StepperContext } from './navigation/stepper/index.js';\nexport {\n CommandMenu,\n CommandMenuTrigger,\n CommandMenuContent,\n CommandMenuInput,\n CommandMenuList,\n CommandMenuItem,\n CommandMenuGroup,\n CommandMenuEmpty,\n getCommandMenuContext,\n setCommandMenuContext\n} from './navigation/command-menu/index.js';\nexport type { CommandMenuContext, CommandItemEntry } from './navigation/command-menu/index.js';\n\n// Feedback Components\nexport { Badge } from './feedback/badge/index.js';\nexport { Tag } from './feedback/tag/index.js';\nexport { Spinner } from './feedback/spinner/index.js';\nexport { Skeleton } from './feedback/skeleton/index.js';\nexport { Progress } from './feedback/progress/index.js';\nexport { Alert } from './feedback/alert/index.js';\nexport { Callout } from './feedback/callout/index.js';\nexport { Banner } from './feedback/banner/index.js';\nexport { InlineMessage } from './feedback/inline-message/index.js';\nexport { LiveRegion } from './feedback/live-region/index.js';\nexport { NotificationBell } from './feedback/notification-bell/index.js';\nexport {\n Toaster,\n ToasterStore,\n Toast,\n createToaster,\n getToasterContext,\n setToasterContext\n} from './feedback/toast/index.js';\nexport type {\n Placement as ToastPlacement,\n ToasterProps,\n AddToastArgs,\n UpdateToastArgs,\n ToastType,\n HoverBehavior,\n TabHiddenBehavior\n} from './feedback/toast/index.js';\n\n// Display Components\nexport { Divider } from './display/divider/index.js';\nexport { Kbd } from './display/kbd/index.js';\nexport { AspectRatio } from './display/aspect-ratio/index.js';\nexport { Frame } from './display/frame/index.js';\nexport { Timestamp } from './display/timestamp/index.js';\nexport { CodeBlock } from './display/code-block/index.js';\nexport { StatCard } from './display/stat-card/index.js';\nexport { Avatar } from './display/avatar/index.js';\nexport {\n Card,\n CardHeader,\n CardTitle,\n CardDescription,\n CardContent,\n CardFooter,\n getCardContext,\n setCardContext\n} from './display/card/index.js';\nexport type { CardContext } from './display/card/index.js';\nexport { Image } from './display/image/index.js';\nexport { List, ListItem } from './display/list/index.js';\nexport { DataList, DataListTerm, DataListDescription } from './display/data-list/index.js';\nexport {\n Table,\n TableCaption,\n TableHead,\n TableBody,\n TableFoot,\n TableRow,\n TableHeader,\n TableCell\n} from './display/table/index.js';\nexport {\n TreeView,\n TreeItem,\n getTreeViewContext,\n setTreeViewContext\n} from './display/tree-view/index.js';\nexport type { TreeViewContext } from './display/tree-view/index.js';\nexport { Timeline, TimelineItem } from './display/timeline/index.js';\nexport { Compare } from './display/compare/index.js';\nexport {\n Carousel,\n CarouselSlides,\n CarouselSlide,\n CarouselPrev,\n CarouselNext,\n CarouselIndicators,\n getCarouselContext,\n setCarouselContext\n} from './display/carousel/index.js';\nexport type { CarouselContext } from './display/carousel/index.js';\n\n// Overlay Components\nexport {\n Modal,\n ModalTrigger,\n ModalContent,\n ModalTitle,\n ModalDescription,\n ModalClose,\n getModalContext,\n setModalContext\n} from './overlay/modal/index.js';\nexport type { ModalContext } from './overlay/modal/index.js';\nexport {\n Dialog,\n DialogTrigger,\n DialogContent,\n DialogTitle,\n DialogDescription,\n DialogClose\n} from './overlay/dialog/index.js';\nexport {\n Drawer,\n DrawerTrigger,\n DrawerContent,\n DrawerTitle,\n DrawerDescription,\n DrawerClose\n} from './overlay/drawer/index.js';\nexport type { DrawerSide } from './overlay/drawer/index.js';\nexport {\n Tooltip,\n TooltipTrigger,\n TooltipContent,\n getTooltipContext,\n setTooltipContext\n} from './overlay/tooltip/index.js';\nexport type { TooltipContext } from './overlay/tooltip/index.js';\nexport {\n Popover,\n PopoverTrigger,\n PopoverContent,\n getPopoverContext,\n setPopoverContext\n} from './overlay/popover/index.js';\nexport type { PopoverContext } from './overlay/popover/index.js';\nexport {\n Dropdown,\n DropdownTrigger,\n DropdownContent,\n DropdownItem,\n getDropdownContext,\n setDropdownContext\n} from './overlay/dropdown/index.js';\nexport type { DropdownContext, DropdownItemEntry } from './overlay/dropdown/index.js';\nexport {\n Sheet,\n SheetContent,\n SheetTrigger,\n SheetTitle,\n SheetDescription,\n SheetClose\n} from './overlay/sheet/index.js';\nexport type { SheetSide } from './overlay/sheet/index.js';\nexport { Overlay } from './overlay/overlay/index.js';\nexport { Lightbox } from './overlay/lightbox/index.js';\nexport type { LightboxImage } from './overlay/lightbox/index.js';\nexport { ContextMenu } from './overlay/context-menu/index.js';\nexport type { ContextMenuItemEntry } from './overlay/context-menu/index.js';\n\n// Layout Components\nexport { Stack } from './layout/stack/index.js';\nexport { Flex } from './layout/flex/index.js';\nexport { Grid } from './layout/grid/index.js';\nexport { Container } from './layout/container/index.js';\nexport { Spacer } from './layout/spacer/index.js';\nexport { Columns } from './layout/columns/index.js';\n\n// Interactive Components\nexport { Sortable } from './interactive/sortable/index.js';\nexport { Swipeable } from './interactive/swipeable/index.js';\nexport type { SwipeDirection } from './interactive/swipeable/index.js';\nexport { Resizable } from './interactive/resizable/index.js';\nexport {\n SplitView,\n SplitViewPane,\n SplitViewHandle,\n getSplitViewContext,\n setSplitViewContext\n} from './interactive/split-view/index.js';\nexport type { SplitViewContext } from './interactive/split-view/index.js';\nexport { Draggable } from './interactive/draggable/index.js';\nexport type { DraggableEvent } from './interactive/draggable/index.js';\nexport { Droppable } from './interactive/droppable/index.js';\nexport type { DroppableEvent } from './interactive/droppable/index.js';\nexport { InfiniteScroll } from './interactive/infinite-scroll/index.js';\nexport { VirtualList } from './interactive/virtual-list/index.js';\n\n// Utility Components\nexport { VisuallyHidden } from './utility/visually-hidden/index.js';\nexport { Portal } from './utility/portal/index.js';\nexport { FocusTrap } from './utility/focus-trap/index.js';\nexport { ScreenReaderOnly } from './utility/screen-reader-only/index.js';\nexport { Conditional } from './utility/conditional/index.js';\n",
|
|
14921
|
-
"utils/a11y/aria.ts": "/**\n * ARIA attribute utilities for WCAG compliance\n */\nimport type {\n LabelConfig,\n ValidationConfig,\n InteractiveStateConfig,\n WidgetConfig
|
|
14922
|
+
"utils/a11y/aria.ts": "/**\n * ARIA attribute utilities for WCAG compliance\n */\nimport type {\n LabelConfig,\n ValidationConfig,\n InteractiveStateConfig,\n WidgetConfig\n} from '$types/index.js';\n\n/**\n * Builds ARIA attributes object from a partial record, filtering out undefined values\n * and converting boolean/number/undefined values to strings for HTML attributes\n *\n * @example\n * ```ts\n * const attrs = buildAriaAttrs({\n * 'aria-label': 'Close',\n * 'aria-expanded': false,\n * 'aria-valuenow': 50,\n * 'aria-hidden': undefined\n * });\n * // { 'aria-label': 'Close', 'aria-expanded': 'false', 'aria-valuenow': '50' }\n * ```\n */\nexport function buildAriaAttrs(\n attrs: Record<string, string | number | boolean | undefined>\n): Record<string, string> {\n const result: Record<string, string> = {};\n for (const [key, value] of Object.entries(attrs)) {\n if (value !== undefined) {\n result[key] = String(value);\n }\n }\n return result;\n}\n\n/**\n * Creates ARIA attributes for labeling and describing elements\n *\n * @example\n * ```svelte\n * <Input\n * id=\"email\"\n * {...labelAttrs({ label: 'Email address' })}\n * />\n * ```\n */\nexport function labelAttrs(options: LabelConfig = {}) {\n return buildAriaAttrs({\n 'aria-label': options.label,\n 'aria-labelledby': options.labelledby,\n 'aria-describedby': options.describedby\n });\n}\n\n/**\n * Creates ARIA attributes for form validation states\n *\n * @example\n * ```svelte\n * <Input\n * bind:value={email}\n * {...validationAttrs({ invalid: !isValid, errormessage: 'email-error' })}\n * />\n * <p id=\"email-error\" role=\"alert\">{error}</p>\n * ```\n */\nexport function validationAttrs(options: ValidationConfig = {}) {\n return buildAriaAttrs({\n 'aria-invalid': options.invalid,\n 'aria-required': options.required,\n 'aria-errormessage': options.errormessage\n });\n}\n\n/**\n * Creates ARIA attributes for interactive element states\n *\n * @example\n * ```svelte\n * <Button\n * onclick={() => pressed = !pressed}\n * {...interactiveStateAttrs({ pressed })}\n * >\n * Toggle\n * </Button>\n * ```\n */\nexport function interactiveStateAttrs(options: InteractiveStateConfig = {}) {\n return buildAriaAttrs({\n 'aria-pressed': options.pressed,\n 'aria-expanded': options.expanded,\n 'aria-checked': options.checked,\n 'aria-selected': options.selected,\n 'aria-disabled': options.disabled,\n 'aria-busy': options.busy,\n 'aria-current': options.current\n });\n}\n\n/**\n * Creates ARIA attributes for complex widgets and roles\n *\n * @example\n * ```svelte\n * <div role=\"slider\" {...widgetAttrs({\n * valuenow: value,\n * valuemin: 0,\n * valuemax: 100\n * })} />\n * ```\n */\nexport function widgetAttrs(options: WidgetConfig = {}) {\n return buildAriaAttrs({\n 'aria-controls': options.controls,\n 'aria-haspopup': options.haspopup,\n 'aria-valuenow': options.valuenow,\n 'aria-valuetext': options.valuetext,\n 'aria-valuemin': options.valuemin,\n 'aria-valuemax': options.valuemax,\n 'aria-live': options.live,\n 'aria-activedescendant': options.activedescendant,\n 'aria-posinset': options.posinset,\n 'aria-setsize': options.setsize,\n 'aria-level': options.level,\n 'aria-orientation': options.orientation\n });\n}\n\n/**\n * Combines multiple ARIA attribute objects into one\n * Useful for composing different accessibility patterns\n *\n * @example\n * ```svelte\n * <button {...mergeAttrs(\n * labelAttrs({ label: 'Menu' }),\n * interactiveStateAttrs({ expanded: isOpen }),\n * widgetAttrs({ haspopup: 'menu', controls: 'menu-id' })\n * )}>\n * Menu\n * </button>\n * ```\n */\nexport function mergeAttrs(...attrSets: Record<string, string>[]): Record<string, string> {\n return Object.assign({}, ...attrSets);\n}\n",
|
|
14922
14923
|
"utils/a11y/focus.ts": "/**\n * Focus management utilities for accessibility\n */\n\n/**\n * Traps focus within a container (for modals, dialogs, dropdowns)\n * Returns a cleanup function that removes the event listener\n *\n * @example\n * ```svelte\n * <script>\n * import { focus } from 'alus-ui';\n * let modalElement;\n *\n * function openModal() {\n * modalElement.showModal();\n * const cleanup = focus.trap(modalElement);\n * // Store cleanup to call when modal closes\n * }\n * </script>\n *\n * <dialog bind:this={modalElement}>\n * <!-- Content -->\n * </dialog>\n * ```\n */\nexport function trap(container: HTMLElement): () => void {\n const focusableElements = container.querySelectorAll(\n 'a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex=\"-1\"])'\n );\n const firstElement = focusableElements[0] as HTMLElement;\n const lastElement = focusableElements[focusableElements.length - 1] as HTMLElement;\n\n const handleTabKey = (e: KeyboardEvent) => {\n if (e.key !== 'Tab') return;\n\n if (e.shiftKey) {\n if (document.activeElement === firstElement) {\n e.preventDefault();\n lastElement?.focus();\n }\n } else {\n if (document.activeElement === lastElement) {\n e.preventDefault();\n firstElement?.focus();\n }\n }\n };\n\n container.addEventListener('keydown', handleTabKey);\n return () => container.removeEventListener('keydown', handleTabKey);\n}\n\n/**\n * Moves focus to first focusable element in container\n *\n * @example\n * ```svelte\n * <script>\n * import { focus } from 'alus-ui';\n * let dialogElement;\n *\n * function open() {\n * dialogElement.showModal();\n * focus.focusFirst(dialogElement);\n * }\n * </script>\n * ```\n */\nexport function focusFirst(container: HTMLElement): void {\n const focusable = container.querySelector<HTMLElement>(\n 'a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex=\"-1\"])'\n );\n focusable?.focus();\n}\n\n/**\n * Moves focus to last focusable element in container\n */\nexport function focusLast(container: HTMLElement): void {\n const focusable = container.querySelectorAll<HTMLElement>(\n 'a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex=\"-1\"])'\n );\n const last = focusable[focusable.length - 1];\n last?.focus();\n}\n\n/**\n * Checks if an element can receive focus\n */\nexport function isFocusable(element: HTMLElement): boolean {\n if (\n element instanceof HTMLButtonElement ||\n element instanceof HTMLInputElement ||\n element instanceof HTMLSelectElement ||\n element instanceof HTMLTextAreaElement\n ) {\n return !element.disabled && element.tabIndex >= 0;\n }\n\n if (element instanceof HTMLAnchorElement) {\n return element.href !== '';\n }\n\n return element.tabIndex >= 0;\n}\n",
|
|
14923
14924
|
"utils/a11y/id.ts": "/**\n * ID generation utilities for accessibility associations\n */\n\nlet counter = 0;\n\n/**\n * Creates a unique ID for accessibility associations\n * Useful for generating IDs for aria-describedby, aria-labelledby, etc.\n *\n * @param prefix - Descriptive prefix for the ID (e.g., 'label', 'desc', 'error')\n * @returns A unique ID string\n *\n * @example\n * ```svelte\n * <script>\n * import { generateId } from 'alus-ui';\n *\n * const labelId = generateId('label');\n * const errorId = generateId('error');\n * </script>\n *\n * <Input id=\"email\" {...labelAttrs({ labelledby: labelId, describedby: errorId })} />\n * <label {for}>Email</label>\n * <p id={errorId} role=\"alert\">{error}</p>\n * ```\n */\nexport function generateId(prefix: string): string {\n return `alus-${prefix}-${Math.random().toString(36).substring(2, 9)}`;\n}\n\n/**\n * Creates a sequential ID (useful for lists, radios, checkboxes)\n *\n * @param prefix - Descriptive prefix for the ID\n * @returns A sequential ID string\n *\n * @example\n * ```svelte\n * {#each items as item, i}\n * <Radio id={generateSequentialId('option', i)} />\n * {/each}\n * ```\n */\nexport function generateSequentialId(prefix: string, index: number): string {\n return `alus-${prefix}-${index}`;\n}\n\n/**\n * Creates a counter-based ID (guaranteed unique per session)\n *\n * @param prefix - Descriptive prefix for the ID\n * @returns A unique counter-based ID\n */\nexport function generateCounterId(prefix: string): string {\n return `alus-${prefix}-${counter++}`;\n}\n\n/**\n * ID generation utilities object\n */\nexport const id = {\n generate: generateId,\n sequential: generateSequentialId,\n counter: generateCounterId\n};\n",
|
|
14924
14925
|
"utils/a11y/keyboard.ts": "/**\n * Keyboard event utilities for accessibility\n */\n\n/**\n * Checks if Enter or Space was pressed (for button-like behavior)\n *\n * @example\n * ```svelte\n * <script>\n * import { keyboard } from 'alus-ui';\n *\n * function handleKeydown(e: KeyboardEvent) {\n * if (keyboard.isActivationKey(e)) {\n * // Activate button\n * }\n * }\n * </script>\n * ```\n */\nexport function isActivationKey(event: KeyboardEvent): boolean {\n return event.key === 'Enter' || event.key === ' ' || event.key === 'Spacebar';\n}\n\n/**\n * Checks if Escape was pressed\n */\nexport function isEscape(event: KeyboardEvent): boolean {\n return event.key === 'Escape';\n}\n\n/**\n * Checks if Arrow key was pressed\n */\nexport function isArrow(event: KeyboardEvent): boolean {\n return (\n event.key === 'ArrowUp' ||\n event.key === 'ArrowDown' ||\n event.key === 'ArrowLeft' ||\n event.key === 'ArrowRight'\n );\n}\n\n/**\n * Checks if Home or End was pressed\n */\nexport function isHomeEnd(event: KeyboardEvent): boolean {\n return event.key === 'Home' || event.key === 'End';\n}\n\n/**\n * Checks if Page Up or Page Down was pressed\n */\nexport function isPageUpDown(event: KeyboardEvent): boolean {\n return event.key === 'PageUp' || event.key === 'PageDown';\n}\n\n/**\n * Prevents default behavior for activation keys (Space key scrolling)\n *\n * @example\n * ```svelte\n * <div\n * role=\"button\"\n * onkeydown={(e) => {\n * keyboard.preventActivation(e);\n * if (keyboard.isActivationKey(e)) {\n * // Handle activation\n * }\n * }}\n * >\n * Custom Button\n * </div>\n * ```\n */\nexport function preventActivation(event: KeyboardEvent): void {\n if (event.key === ' ' || event.key === 'Spacebar') {\n event.preventDefault();\n }\n}\n\n/**\n * Gets the direction from an arrow key event\n */\nexport function getArrowDirection(event: KeyboardEvent): 'up' | 'down' | 'left' | 'right' | null {\n switch (event.key) {\n case 'ArrowUp':\n return 'up';\n case 'ArrowDown':\n return 'down';\n case 'ArrowLeft':\n return 'left';\n case 'ArrowRight':\n return 'right';\n default:\n return null;\n }\n}\n\n/**\n * Keyboard event handler utility object\n */\nexport const keyboard = {\n isActivationKey,\n isEscape,\n isArrow,\n isHomeEnd,\n isPageUpDown,\n preventActivation,\n getArrowDirection\n};\n",
|
|
14925
14926
|
"utils/a11y/index.ts": "/**\n * Accessibility utilities for WCAG compliance and ARIA attributes\n * @module a11y\n */\n\n// Export all ARIA utilities\nexport * from './aria.js';\n\n// Export focus management\nexport * from './focus.js';\n\n// Export keyboard utilities\nexport * from './keyboard.js';\n\n// Export ID generation\nexport * from './id.js';\n",
|
|
14926
14927
|
"utils/form/state.ts": "/**\n * Form field state management\n * @module form/state\n */\n\n/**\n * Form field state interface\n */\nexport interface FormFieldState<T = string> {\n value: T;\n error: string | undefined;\n touched: boolean;\n dirty: boolean;\n}\n\n/**\n * Create a reactive form field state\n * @param initialValue - Initial value for the field\n * @returns Form field state object\n *\n * @example\n * ```svelte\n * <script>\n * import { createFormField } from 'alus-ui/utils/form';\n *\n * let email = createFormField('');\n * </script>\n *\n * <Input\n * bind:value={email.value}\n * aria-invalid={email.error !== undefined}\n * onblur={() => email.touched = true}\n * />\n *\n * {#if email.error && email.touched}\n * <p class=\"error\">{email.error}</p>\n * {/if}\n * ```\n */\nexport function createFormField<T = string>(initialValue: T): FormFieldState<T> {\n return {\n value: initialValue,\n error: undefined,\n touched: false,\n dirty: false\n };\n}\n\n/**\n * Form state manager for multiple fields\n */\nexport interface FormState<T extends Record<string, unknown>> {\n values: T;\n errors: Record<keyof T, string | undefined>;\n touched: Record<keyof T, boolean>;\n dirty: Record<keyof T, boolean>;\n}\n\n/**\n * Create a form state manager\n * @param initialValues - Initial values for all fields\n * @returns Form state object\n *\n * @example\n * ```svelte\n * <script>\n * import { createFormState } from 'alus-ui/utils/form';\n *\n * let form = createFormState({\n * email: '',\n * password: '',\n * terms: false\n * });\n * </script>\n *\n * <Input bind:value={form.values.email} />\n * <Input bind:value={form.values.password} />\n * ```\n */\nexport function createFormState<T extends Record<string, unknown>>(initialValues: T): FormState<T> {\n const keys = Object.keys(initialValues) as Array<keyof T>;\n\n const touched = {} as Record<keyof T, boolean>;\n const dirty = {} as Record<keyof T, boolean>;\n const errors = {} as Record<keyof T, string | undefined>;\n\n for (const key of keys) {\n touched[key] = false;\n dirty[key] = false;\n errors[key] = undefined;\n }\n\n return {\n values: initialValues,\n errors,\n touched,\n dirty\n };\n}\n\n/**\n * Check if form has any errors\n * @param form - Form state object\n * @returns Whether any field has an error\n */\nexport function hasFormErrors<T extends Record<string, unknown>>(form: FormState<T>): boolean {\n return Object.values(form.errors).some((error) => error !== undefined);\n}\n\n/**\n * Check if form is valid (no errors and all required fields touched)\n * @param form - Form state object\n * @returns Whether form is valid\n */\nexport function isFormValid<T extends Record<string, unknown>>(form: FormState<T>): boolean {\n return !hasFormErrors(form) && Object.values(form.touched).every((t) => t);\n}\n\n/**\n * Reset form to initial state\n * @param form - Form state object\n * @param initialValues - Initial values to reset to\n */\nexport function resetForm<T extends Record<string, unknown>>(\n form: FormState<T>,\n initialValues: T\n): void {\n for (const key of Object.keys(initialValues) as Array<keyof T>) {\n (form.values as Record<keyof T, unknown>)[key] = initialValues[key];\n form.errors[key] = undefined;\n form.touched[key] = false;\n form.dirty[key] = false;\n }\n}\n",
|
|
14927
14928
|
"demos/accordion/+page.svelte": `<script lang="ts">
|
|
14929
|
+
import { resolve } from '$app/paths';
|
|
14928
14930
|
import { CaretLeft, Plus } from 'phosphor-svelte';
|
|
14929
14931
|
import { Accordion, AccordionItem, AccordionTrigger, AccordionContent } from 'alus-ui';
|
|
14930
14932
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -14949,7 +14951,7 @@ var BUNDLED_DATA = {
|
|
|
14949
14951
|
</svelte:head>
|
|
14950
14952
|
|
|
14951
14953
|
<a
|
|
14952
|
-
href=
|
|
14954
|
+
href={resolve('/')}
|
|
14953
14955
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
14954
14956
|
>
|
|
14955
14957
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -15006,7 +15008,7 @@ var BUNDLED_DATA = {
|
|
|
15006
15008
|
|
|
15007
15009
|
<div class="japanese-border bg-white/50 p-8 backdrop-blur-sm">
|
|
15008
15010
|
<Accordion type="multiple" bind:value={multi} class="divide-y divide-(--indigo-dye)/10">
|
|
15009
|
-
{#each ['One', 'Two', 'Three'] as label, i}
|
|
15011
|
+
{#each ['One', 'Two', 'Three'] as label, i (i)}
|
|
15010
15012
|
<AccordionItem value={\`m\${i}\`}>
|
|
15011
15013
|
<AccordionTrigger class="py-4 text-left text-(--ink) hover:text-(--vermilion)">
|
|
15012
15014
|
{label}
|
|
@@ -15066,6 +15068,7 @@ var BUNDLED_DATA = {
|
|
|
15066
15068
|
</main>
|
|
15067
15069
|
`,
|
|
15068
15070
|
"demos/alert/+page.svelte": `<script lang="ts">
|
|
15071
|
+
import { resolve } from '$app/paths';
|
|
15069
15072
|
import { CaretLeft, Info, CheckCircle, Warning, XCircle } from 'phosphor-svelte';
|
|
15070
15073
|
import { Alert } from 'alus-ui';
|
|
15071
15074
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -15083,7 +15086,7 @@ var BUNDLED_DATA = {
|
|
|
15083
15086
|
</svelte:head>
|
|
15084
15087
|
|
|
15085
15088
|
<a
|
|
15086
|
-
href=
|
|
15089
|
+
href={resolve('/')}
|
|
15087
15090
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
15088
15091
|
>
|
|
15089
15092
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -15208,6 +15211,7 @@ var BUNDLED_DATA = {
|
|
|
15208
15211
|
</main>
|
|
15209
15212
|
`,
|
|
15210
15213
|
"demos/aspect-ratio/+page.svelte": `<script lang="ts">
|
|
15214
|
+
import { resolve } from '$app/paths';
|
|
15211
15215
|
import { CaretLeft } from 'phosphor-svelte';
|
|
15212
15216
|
import { AspectRatio } from 'alus-ui';
|
|
15213
15217
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -15230,7 +15234,7 @@ var BUNDLED_DATA = {
|
|
|
15230
15234
|
</svelte:head>
|
|
15231
15235
|
|
|
15232
15236
|
<a
|
|
15233
|
-
href=
|
|
15237
|
+
href={resolve('/')}
|
|
15234
15238
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
15235
15239
|
>
|
|
15236
15240
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -15258,7 +15262,7 @@ var BUNDLED_DATA = {
|
|
|
15258
15262
|
<div
|
|
15259
15263
|
class="japanese-border grid grid-cols-2 gap-6 bg-white/50 p-8 backdrop-blur-sm md:grid-cols-3 lg:grid-cols-5"
|
|
15260
15264
|
>
|
|
15261
|
-
{#each ratios as r}
|
|
15265
|
+
{#each ratios as r, i (i)}
|
|
15262
15266
|
<div class="flex flex-col items-center gap-2">
|
|
15263
15267
|
<AspectRatio
|
|
15264
15268
|
ratio={r.value}
|
|
@@ -15295,6 +15299,7 @@ var BUNDLED_DATA = {
|
|
|
15295
15299
|
</main>
|
|
15296
15300
|
`,
|
|
15297
15301
|
"demos/auto-complete/+page.svelte": `<script lang="ts">
|
|
15302
|
+
import { resolve } from '$app/paths';
|
|
15298
15303
|
import { CaretLeft, MapPin, MagnifyingGlass, CircleNotch } from 'phosphor-svelte';
|
|
15299
15304
|
import { AutoComplete, type AutoCompleteOption } from 'alus-ui';
|
|
15300
15305
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -15377,7 +15382,7 @@ var BUNDLED_DATA = {
|
|
|
15377
15382
|
</svelte:head>
|
|
15378
15383
|
|
|
15379
15384
|
<a
|
|
15380
|
-
href=
|
|
15385
|
+
href={resolve('/')}
|
|
15381
15386
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
15382
15387
|
>
|
|
15383
15388
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -15552,6 +15557,7 @@ var BUNDLED_DATA = {
|
|
|
15552
15557
|
</main>
|
|
15553
15558
|
`,
|
|
15554
15559
|
"demos/avatar/+page.svelte": `<script lang="ts">
|
|
15560
|
+
import { resolve } from '$app/paths';
|
|
15555
15561
|
import { CaretLeft } from 'phosphor-svelte';
|
|
15556
15562
|
import { Avatar } from 'alus-ui';
|
|
15557
15563
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -15572,7 +15578,7 @@ var BUNDLED_DATA = {
|
|
|
15572
15578
|
</svelte:head>
|
|
15573
15579
|
|
|
15574
15580
|
<a
|
|
15575
|
-
href=
|
|
15581
|
+
href={resolve('/')}
|
|
15576
15582
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
15577
15583
|
>
|
|
15578
15584
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -15730,6 +15736,7 @@ var BUNDLED_DATA = {
|
|
|
15730
15736
|
</main>
|
|
15731
15737
|
`,
|
|
15732
15738
|
"demos/badge/+page.svelte": `<script lang="ts">
|
|
15739
|
+
import { resolve } from '$app/paths';
|
|
15733
15740
|
import { CaretLeft } from 'phosphor-svelte';
|
|
15734
15741
|
import { Badge } from 'alus-ui';
|
|
15735
15742
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -15748,7 +15755,7 @@ var BUNDLED_DATA = {
|
|
|
15748
15755
|
</svelte:head>
|
|
15749
15756
|
|
|
15750
15757
|
<a
|
|
15751
|
-
href=
|
|
15758
|
+
href={resolve('/')}
|
|
15752
15759
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
15753
15760
|
>
|
|
15754
15761
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -15890,6 +15897,7 @@ var BUNDLED_DATA = {
|
|
|
15890
15897
|
</main>
|
|
15891
15898
|
`,
|
|
15892
15899
|
"demos/banner/+page.svelte": `<script lang="ts">
|
|
15900
|
+
import { resolve } from '$app/paths';
|
|
15893
15901
|
import { CaretLeft, Info, CheckCircle, Warning, XCircle, Megaphone } from 'phosphor-svelte';
|
|
15894
15902
|
import { Banner, Button } from 'alus-ui';
|
|
15895
15903
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -15914,7 +15922,7 @@ var BUNDLED_DATA = {
|
|
|
15914
15922
|
</svelte:head>
|
|
15915
15923
|
|
|
15916
15924
|
<a
|
|
15917
|
-
href=
|
|
15925
|
+
href={resolve('/')}
|
|
15918
15926
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
15919
15927
|
>
|
|
15920
15928
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -16027,6 +16035,7 @@ var BUNDLED_DATA = {
|
|
|
16027
16035
|
</main>
|
|
16028
16036
|
`,
|
|
16029
16037
|
"demos/breadcrumb/+page.svelte": `<script lang="ts">
|
|
16038
|
+
import { resolve } from '$app/paths';
|
|
16030
16039
|
import { CaretLeft, CaretRight, House } from 'phosphor-svelte';
|
|
16031
16040
|
import { Breadcrumb, BreadcrumbItem, BreadcrumbSeparator } from 'alus-ui';
|
|
16032
16041
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -16045,7 +16054,7 @@ var BUNDLED_DATA = {
|
|
|
16045
16054
|
</svelte:head>
|
|
16046
16055
|
|
|
16047
16056
|
<a
|
|
16048
|
-
href=
|
|
16057
|
+
href={resolve('/')}
|
|
16049
16058
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
16050
16059
|
>
|
|
16051
16060
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -16075,11 +16084,17 @@ var BUNDLED_DATA = {
|
|
|
16075
16084
|
|
|
16076
16085
|
<div class="japanese-border bg-white/50 p-8 backdrop-blur-sm">
|
|
16077
16086
|
<Breadcrumb listClass="flex flex-wrap items-center gap-2 text-sm">
|
|
16078
|
-
<BreadcrumbItem
|
|
16087
|
+
<BreadcrumbItem
|
|
16088
|
+
href={resolve('/')}
|
|
16089
|
+
linkClass="text-(--indigo-dye) hover:text-(--vermilion)"
|
|
16090
|
+
>
|
|
16079
16091
|
Home
|
|
16080
16092
|
</BreadcrumbItem>
|
|
16081
16093
|
<BreadcrumbSeparator class="text-(--charcoal)/30">/</BreadcrumbSeparator>
|
|
16082
|
-
<BreadcrumbItem
|
|
16094
|
+
<BreadcrumbItem
|
|
16095
|
+
href={resolve('/components')}
|
|
16096
|
+
linkClass="text-(--indigo-dye) hover:text-(--vermilion)"
|
|
16097
|
+
>
|
|
16083
16098
|
Components
|
|
16084
16099
|
</BreadcrumbItem>
|
|
16085
16100
|
<BreadcrumbSeparator class="text-(--charcoal)/30">/</BreadcrumbSeparator>
|
|
@@ -16097,7 +16112,7 @@ var BUNDLED_DATA = {
|
|
|
16097
16112
|
<div class="japanese-border bg-white/50 p-8 backdrop-blur-sm">
|
|
16098
16113
|
<Breadcrumb listClass="flex flex-wrap items-center gap-2 text-sm">
|
|
16099
16114
|
<BreadcrumbItem
|
|
16100
|
-
href=
|
|
16115
|
+
href={resolve('/')}
|
|
16101
16116
|
linkClass="inline-flex items-center gap-1 text-(--indigo-dye) hover:text-(--vermilion)"
|
|
16102
16117
|
>
|
|
16103
16118
|
<House class="h-4 w-4" />
|
|
@@ -16106,7 +16121,10 @@ var BUNDLED_DATA = {
|
|
|
16106
16121
|
<BreadcrumbSeparator class="text-(--charcoal)/30">
|
|
16107
16122
|
<CaretRight class="h-3 w-3" />
|
|
16108
16123
|
</BreadcrumbSeparator>
|
|
16109
|
-
<BreadcrumbItem
|
|
16124
|
+
<BreadcrumbItem
|
|
16125
|
+
href={resolve('/docs')}
|
|
16126
|
+
linkClass="text-(--indigo-dye) hover:text-(--vermilion)"
|
|
16127
|
+
>
|
|
16110
16128
|
Docs
|
|
16111
16129
|
</BreadcrumbItem>
|
|
16112
16130
|
<BreadcrumbSeparator class="text-(--charcoal)/30">
|
|
@@ -16149,6 +16167,7 @@ var BUNDLED_DATA = {
|
|
|
16149
16167
|
</main>
|
|
16150
16168
|
`,
|
|
16151
16169
|
"demos/button/+page.svelte": `<script lang="ts">
|
|
16170
|
+
import { resolve } from '$app/paths';
|
|
16152
16171
|
import { CaretLeft } from 'phosphor-svelte';
|
|
16153
16172
|
import { Button } from 'alus-ui';
|
|
16154
16173
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -16180,7 +16199,7 @@ var BUNDLED_DATA = {
|
|
|
16180
16199
|
</svelte:head>
|
|
16181
16200
|
|
|
16182
16201
|
<a
|
|
16183
|
-
href=
|
|
16202
|
+
href={resolve('/')}
|
|
16184
16203
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
16185
16204
|
>
|
|
16186
16205
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -16319,6 +16338,7 @@ var BUNDLED_DATA = {
|
|
|
16319
16338
|
</main>
|
|
16320
16339
|
`,
|
|
16321
16340
|
"demos/calendar/+page.svelte": `<script lang="ts">
|
|
16341
|
+
import { resolve } from '$app/paths';
|
|
16322
16342
|
import { CaretLeft } from 'phosphor-svelte';
|
|
16323
16343
|
import { Calendar } from 'alus-ui';
|
|
16324
16344
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -16398,7 +16418,7 @@ var BUNDLED_DATA = {
|
|
|
16398
16418
|
</svelte:head>
|
|
16399
16419
|
|
|
16400
16420
|
<a
|
|
16401
|
-
href=
|
|
16421
|
+
href={resolve('/')}
|
|
16402
16422
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
16403
16423
|
>
|
|
16404
16424
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -16612,6 +16632,7 @@ var BUNDLED_DATA = {
|
|
|
16612
16632
|
</main>
|
|
16613
16633
|
`,
|
|
16614
16634
|
"demos/callout/+page.svelte": `<script lang="ts">
|
|
16635
|
+
import { resolve } from '$app/paths';
|
|
16615
16636
|
import { CaretLeft, Info, CheckCircle, Warning, XCircle, Lightbulb, Note } from 'phosphor-svelte';
|
|
16616
16637
|
import { Callout } from 'alus-ui';
|
|
16617
16638
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -16672,7 +16693,7 @@ var BUNDLED_DATA = {
|
|
|
16672
16693
|
</svelte:head>
|
|
16673
16694
|
|
|
16674
16695
|
<a
|
|
16675
|
-
href=
|
|
16696
|
+
href={resolve('/')}
|
|
16676
16697
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
16677
16698
|
>
|
|
16678
16699
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -16698,7 +16719,7 @@ var BUNDLED_DATA = {
|
|
|
16698
16719
|
<h2 class="font-display mb-8 text-2xl text-(--ink)">Variants</h2>
|
|
16699
16720
|
|
|
16700
16721
|
<div class="japanese-border space-y-4 bg-white/50 p-8 backdrop-blur-sm">
|
|
16701
|
-
{#each items as item}
|
|
16722
|
+
{#each items as item, i (i)}
|
|
16702
16723
|
{@const Icon = icon(item.variant)}
|
|
16703
16724
|
<Callout
|
|
16704
16725
|
variant={item.variant}
|
|
@@ -16741,6 +16762,7 @@ var BUNDLED_DATA = {
|
|
|
16741
16762
|
</main>
|
|
16742
16763
|
`,
|
|
16743
16764
|
"demos/card/+page.svelte": `<script lang="ts">
|
|
16765
|
+
import { resolve } from '$app/paths';
|
|
16744
16766
|
import { CaretLeft } from 'phosphor-svelte';
|
|
16745
16767
|
import { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter } from 'alus-ui';
|
|
16746
16768
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -16762,7 +16784,7 @@ var BUNDLED_DATA = {
|
|
|
16762
16784
|
</svelte:head>
|
|
16763
16785
|
|
|
16764
16786
|
<a
|
|
16765
|
-
href=
|
|
16787
|
+
href={resolve('/')}
|
|
16766
16788
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
16767
16789
|
>
|
|
16768
16790
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -16835,6 +16857,7 @@ var BUNDLED_DATA = {
|
|
|
16835
16857
|
</main>
|
|
16836
16858
|
`,
|
|
16837
16859
|
"demos/carousel/+page.svelte": `<script lang="ts">
|
|
16860
|
+
import { resolve } from '$app/paths';
|
|
16838
16861
|
import { CaretLeft, CaretRight, ArrowLeft, ArrowRight } from 'phosphor-svelte';
|
|
16839
16862
|
import {
|
|
16840
16863
|
Carousel,
|
|
@@ -16876,7 +16899,7 @@ var BUNDLED_DATA = {
|
|
|
16876
16899
|
</svelte:head>
|
|
16877
16900
|
|
|
16878
16901
|
<a
|
|
16879
|
-
href=
|
|
16902
|
+
href={resolve('/')}
|
|
16880
16903
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
16881
16904
|
>
|
|
16882
16905
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -16982,6 +17005,7 @@ var BUNDLED_DATA = {
|
|
|
16982
17005
|
</main>
|
|
16983
17006
|
`,
|
|
16984
17007
|
"demos/checkbox/+page.svelte": `<script lang="ts">
|
|
17008
|
+
import { resolve } from '$app/paths';
|
|
16985
17009
|
import { CaretLeft, Check } from 'phosphor-svelte';
|
|
16986
17010
|
import { Checkbox } from 'alus-ui';
|
|
16987
17011
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -17043,7 +17067,7 @@ var BUNDLED_DATA = {
|
|
|
17043
17067
|
</svelte:head>
|
|
17044
17068
|
|
|
17045
17069
|
<a
|
|
17046
|
-
href=
|
|
17070
|
+
href={resolve('/')}
|
|
17047
17071
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
17048
17072
|
>
|
|
17049
17073
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -17389,6 +17413,7 @@ var BUNDLED_DATA = {
|
|
|
17389
17413
|
</main>
|
|
17390
17414
|
`,
|
|
17391
17415
|
"demos/code-block/+page.svelte": `<script lang="ts">
|
|
17416
|
+
import { resolve } from '$app/paths';
|
|
17392
17417
|
import { CaretLeft, Copy, Check } from 'phosphor-svelte';
|
|
17393
17418
|
import { CodeBlock } from 'alus-ui';
|
|
17394
17419
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -17424,7 +17449,7 @@ sum(1, 2);\`;
|
|
|
17424
17449
|
</svelte:head>
|
|
17425
17450
|
|
|
17426
17451
|
<a
|
|
17427
|
-
href=
|
|
17452
|
+
href={resolve('/')}
|
|
17428
17453
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
17429
17454
|
>
|
|
17430
17455
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -17523,6 +17548,7 @@ sum(1, 2);\`;
|
|
|
17523
17548
|
</main>
|
|
17524
17549
|
`,
|
|
17525
17550
|
"demos/color-picker/+page.svelte": `<script lang="ts">
|
|
17551
|
+
import { resolve } from '$app/paths';
|
|
17526
17552
|
import { CaretLeft, Lock, Drop } from 'phosphor-svelte';
|
|
17527
17553
|
import { ColorPicker } from 'alus-ui';
|
|
17528
17554
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -17575,7 +17601,7 @@ sum(1, 2);\`;
|
|
|
17575
17601
|
</svelte:head>
|
|
17576
17602
|
|
|
17577
17603
|
<a
|
|
17578
|
-
href=
|
|
17604
|
+
href={resolve('/')}
|
|
17579
17605
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
17580
17606
|
>
|
|
17581
17607
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -17758,6 +17784,7 @@ sum(1, 2);\`;
|
|
|
17758
17784
|
</main>
|
|
17759
17785
|
`,
|
|
17760
17786
|
"demos/command-menu/+page.svelte": `<script lang="ts">
|
|
17787
|
+
import { resolve } from '$app/paths';
|
|
17761
17788
|
import {
|
|
17762
17789
|
CaretLeft,
|
|
17763
17790
|
MagnifyingGlass,
|
|
@@ -17818,7 +17845,7 @@ sum(1, 2);\`;
|
|
|
17818
17845
|
</svelte:head>
|
|
17819
17846
|
|
|
17820
17847
|
<a
|
|
17821
|
-
href=
|
|
17848
|
+
href={resolve('/')}
|
|
17822
17849
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
17823
17850
|
>
|
|
17824
17851
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -17876,127 +17903,111 @@ sum(1, 2);\`;
|
|
|
17876
17903
|
</CommandMenuEmpty>
|
|
17877
17904
|
|
|
17878
17905
|
<CommandMenuGroup class="mb-1">
|
|
17879
|
-
|
|
17880
|
-
|
|
17881
|
-
|
|
17882
|
-
|
|
17883
|
-
|
|
17884
|
-
|
|
17885
|
-
|
|
17886
|
-
|
|
17887
|
-
|
|
17888
|
-
|
|
17889
|
-
|
|
17890
|
-
>
|
|
17891
|
-
|
|
17892
|
-
|
|
17893
|
-
|
|
17894
|
-
|
|
17895
|
-
|
|
17896
|
-
|
|
17897
|
-
|
|
17898
|
-
|
|
17899
|
-
|
|
17900
|
-
>
|
|
17901
|
-
|
|
17902
|
-
<span>Open folder</span>
|
|
17903
|
-
<kbd class="ml-auto font-mono text-xs text-(--charcoal)/50">\u2318O</kbd>
|
|
17904
|
-
</CommandMenuItem>
|
|
17905
|
-
{/snippet}
|
|
17906
|
+
<div class="font-display px-2 py-1 text-xs tracking-widest text-(--bamboo) uppercase">
|
|
17907
|
+
Files
|
|
17908
|
+
</div>
|
|
17909
|
+
<CommandMenuItem
|
|
17910
|
+
value="New file"
|
|
17911
|
+
keywords="create document \u65B0\u898F \u30D5\u30A1\u30A4\u30EB \u4F5C\u6210"
|
|
17912
|
+
onSelect={() => handle('New file')}
|
|
17913
|
+
class="flex cursor-pointer items-center gap-3 rounded px-3 py-2 text-sm transition-colors data-highlighted:bg-(--cream)"
|
|
17914
|
+
>
|
|
17915
|
+
<File class="h-4 w-4 text-(--indigo-dye)" />
|
|
17916
|
+
<span>New file</span>
|
|
17917
|
+
<kbd class="ml-auto font-mono text-xs text-(--charcoal)/50">\u2318N</kbd>
|
|
17918
|
+
</CommandMenuItem>
|
|
17919
|
+
<CommandMenuItem
|
|
17920
|
+
value="Open folder"
|
|
17921
|
+
keywords="directory browse \u30D5\u30A9\u30EB\u30C0 \u958B\u304F"
|
|
17922
|
+
onSelect={() => handle('Open folder')}
|
|
17923
|
+
class="flex cursor-pointer items-center gap-3 rounded px-3 py-2 text-sm transition-colors data-highlighted:bg-(--cream)"
|
|
17924
|
+
>
|
|
17925
|
+
<Folder class="h-4 w-4 text-(--indigo-dye)" />
|
|
17926
|
+
<span>Open folder</span>
|
|
17927
|
+
<kbd class="ml-auto font-mono text-xs text-(--charcoal)/50">\u2318O</kbd>
|
|
17928
|
+
</CommandMenuItem>
|
|
17906
17929
|
</CommandMenuGroup>
|
|
17907
17930
|
|
|
17908
17931
|
<CommandMenuGroup>
|
|
17909
|
-
|
|
17910
|
-
|
|
17911
|
-
|
|
17912
|
-
|
|
17913
|
-
|
|
17914
|
-
|
|
17915
|
-
|
|
17916
|
-
|
|
17917
|
-
|
|
17918
|
-
|
|
17919
|
-
|
|
17920
|
-
|
|
17921
|
-
|
|
17922
|
-
|
|
17923
|
-
|
|
17924
|
-
|
|
17925
|
-
|
|
17926
|
-
|
|
17927
|
-
|
|
17928
|
-
|
|
17929
|
-
>
|
|
17930
|
-
|
|
17931
|
-
<span>Settings</span>
|
|
17932
|
-
<kbd class="ml-auto font-mono text-xs text-(--charcoal)/50">\u2318,</kbd>
|
|
17933
|
-
</CommandMenuItem>
|
|
17934
|
-
{/snippet}
|
|
17932
|
+
<div class="font-display px-2 py-1 text-xs tracking-widest text-(--bamboo) uppercase">
|
|
17933
|
+
Account
|
|
17934
|
+
</div>
|
|
17935
|
+
<CommandMenuItem
|
|
17936
|
+
value="Profile"
|
|
17937
|
+
keywords="account user me \u30D7\u30ED\u30D5\u30A3\u30FC\u30EB \u81EA\u5206"
|
|
17938
|
+
onSelect={() => handle('Profile')}
|
|
17939
|
+
class="flex cursor-pointer items-center gap-3 rounded px-3 py-2 text-sm transition-colors data-highlighted:bg-(--cream)"
|
|
17940
|
+
>
|
|
17941
|
+
<User class="h-4 w-4 text-(--indigo-dye)" />
|
|
17942
|
+
<span>View profile</span>
|
|
17943
|
+
</CommandMenuItem>
|
|
17944
|
+
<CommandMenuItem
|
|
17945
|
+
value="Settings"
|
|
17946
|
+
keywords="preferences config gear \u8A2D\u5B9A \u74B0\u5883"
|
|
17947
|
+
onSelect={() => handle('Settings')}
|
|
17948
|
+
class="flex cursor-pointer items-center gap-3 rounded px-3 py-2 text-sm transition-colors data-highlighted:bg-(--cream)"
|
|
17949
|
+
>
|
|
17950
|
+
<Gear class="h-4 w-4 text-(--indigo-dye)" />
|
|
17951
|
+
<span>Settings</span>
|
|
17952
|
+
<kbd class="ml-auto font-mono text-xs text-(--charcoal)/50">\u2318,</kbd>
|
|
17953
|
+
</CommandMenuItem>
|
|
17935
17954
|
</CommandMenuGroup>
|
|
17936
17955
|
|
|
17937
17956
|
<CommandMenuGroup>
|
|
17938
|
-
|
|
17939
|
-
|
|
17940
|
-
|
|
17941
|
-
|
|
17942
|
-
|
|
17943
|
-
|
|
17944
|
-
|
|
17945
|
-
|
|
17946
|
-
|
|
17947
|
-
|
|
17948
|
-
|
|
17949
|
-
|
|
17950
|
-
|
|
17951
|
-
|
|
17952
|
-
|
|
17953
|
-
|
|
17954
|
-
|
|
17955
|
-
|
|
17956
|
-
|
|
17957
|
-
|
|
17958
|
-
|
|
17959
|
-
<Moon class="h-4 w-4 text-(--indigo-dye)" />
|
|
17960
|
-
<span>Switch to dark</span>
|
|
17961
|
-
</CommandMenuItem>
|
|
17962
|
-
{/snippet}
|
|
17957
|
+
<div class="font-display px-2 py-1 text-xs tracking-widest text-(--bamboo) uppercase">
|
|
17958
|
+
Theme
|
|
17959
|
+
</div>
|
|
17960
|
+
<CommandMenuItem
|
|
17961
|
+
value="Light theme"
|
|
17962
|
+
keywords="day bright sun \u660E\u308B\u3044 \u592A\u967D \u663C"
|
|
17963
|
+
onSelect={() => handle('Light theme')}
|
|
17964
|
+
class="flex cursor-pointer items-center gap-3 rounded px-3 py-2 text-sm transition-colors data-highlighted:bg-(--cream)"
|
|
17965
|
+
>
|
|
17966
|
+
<Sun class="h-4 w-4 text-(--muted-gold)" />
|
|
17967
|
+
<span>Switch to light</span>
|
|
17968
|
+
</CommandMenuItem>
|
|
17969
|
+
<CommandMenuItem
|
|
17970
|
+
value="Dark theme"
|
|
17971
|
+
keywords="night moon \u6697\u3044 \u591C \u6708"
|
|
17972
|
+
onSelect={() => handle('Dark theme')}
|
|
17973
|
+
class="flex cursor-pointer items-center gap-3 rounded px-3 py-2 text-sm transition-colors data-highlighted:bg-(--cream)"
|
|
17974
|
+
>
|
|
17975
|
+
<Moon class="h-4 w-4 text-(--indigo-dye)" />
|
|
17976
|
+
<span>Switch to dark</span>
|
|
17977
|
+
</CommandMenuItem>
|
|
17963
17978
|
</CommandMenuGroup>
|
|
17964
17979
|
|
|
17965
17980
|
<CommandMenuGroup>
|
|
17966
|
-
|
|
17967
|
-
|
|
17968
|
-
|
|
17969
|
-
|
|
17970
|
-
|
|
17971
|
-
|
|
17972
|
-
|
|
17973
|
-
|
|
17974
|
-
|
|
17975
|
-
|
|
17976
|
-
|
|
17977
|
-
|
|
17978
|
-
|
|
17979
|
-
|
|
17980
|
-
|
|
17981
|
-
|
|
17982
|
-
|
|
17983
|
-
|
|
17984
|
-
|
|
17985
|
-
|
|
17986
|
-
|
|
17987
|
-
|
|
17988
|
-
|
|
17989
|
-
|
|
17990
|
-
|
|
17991
|
-
|
|
17992
|
-
|
|
17993
|
-
|
|
17994
|
-
|
|
17995
|
-
|
|
17996
|
-
<Trash class="h-4 w-4 text-(--vermilion)" />
|
|
17997
|
-
<span>Clear cache</span>
|
|
17998
|
-
</CommandMenuItem>
|
|
17999
|
-
{/snippet}
|
|
17981
|
+
<div class="font-display px-2 py-1 text-xs tracking-widest text-(--bamboo) uppercase">
|
|
17982
|
+
Actions
|
|
17983
|
+
</div>
|
|
17984
|
+
<CommandMenuItem
|
|
17985
|
+
value="Open terminal"
|
|
17986
|
+
keywords="shell command line cli \u7AEF\u672B \u30BF\u30FC\u30DF\u30CA\u30EB"
|
|
17987
|
+
onSelect={() => handle('Open terminal')}
|
|
17988
|
+
class="flex cursor-pointer items-center gap-3 rounded px-3 py-2 text-sm transition-colors data-highlighted:bg-(--cream)"
|
|
17989
|
+
>
|
|
17990
|
+
<Terminal class="h-4 w-4 text-(--indigo-dye)" />
|
|
17991
|
+
<span>Open terminal</span>
|
|
17992
|
+
</CommandMenuItem>
|
|
17993
|
+
<CommandMenuItem
|
|
17994
|
+
value="Reload"
|
|
17995
|
+
keywords="refresh restart \u66F4\u65B0 \u518D\u8AAD\u307F\u8FBC\u307F"
|
|
17996
|
+
onSelect={() => handle('Reload')}
|
|
17997
|
+
class="flex cursor-pointer items-center gap-3 rounded px-3 py-2 text-sm transition-colors data-highlighted:bg-(--cream)"
|
|
17998
|
+
>
|
|
17999
|
+
<ArrowsClockwise class="h-4 w-4 text-(--indigo-dye)" />
|
|
18000
|
+
<span>Reload window</span>
|
|
18001
|
+
</CommandMenuItem>
|
|
18002
|
+
<CommandMenuItem
|
|
18003
|
+
value="Clear cache"
|
|
18004
|
+
keywords="delete trash purge \u524A\u9664 \u6D88\u53BB \u30B4\u30DF\u7BB1"
|
|
18005
|
+
onSelect={() => handle('Clear cache')}
|
|
18006
|
+
class="flex cursor-pointer items-center gap-3 rounded px-3 py-2 text-sm transition-colors data-highlighted:bg-(--cream)"
|
|
18007
|
+
>
|
|
18008
|
+
<Trash class="h-4 w-4 text-(--vermilion)" />
|
|
18009
|
+
<span>Clear cache</span>
|
|
18010
|
+
</CommandMenuItem>
|
|
18000
18011
|
</CommandMenuGroup>
|
|
18001
18012
|
</CommandMenuList>
|
|
18002
18013
|
</CommandMenuContent>
|
|
@@ -18057,6 +18068,7 @@ sum(1, 2);\`;
|
|
|
18057
18068
|
</main>
|
|
18058
18069
|
`,
|
|
18059
18070
|
"demos/compare/+page.svelte": `<script lang="ts">
|
|
18071
|
+
import { resolve } from '$app/paths';
|
|
18060
18072
|
import { CaretLeft, CaretLeft as Left, CaretRight as Right } from 'phosphor-svelte';
|
|
18061
18073
|
import { Compare } from 'alus-ui';
|
|
18062
18074
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -18075,7 +18087,7 @@ sum(1, 2);\`;
|
|
|
18075
18087
|
</svelte:head>
|
|
18076
18088
|
|
|
18077
18089
|
<a
|
|
18078
|
-
href=
|
|
18090
|
+
href={resolve('/')}
|
|
18079
18091
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
18080
18092
|
>
|
|
18081
18093
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -18185,6 +18197,7 @@ sum(1, 2);\`;
|
|
|
18185
18197
|
</main>
|
|
18186
18198
|
`,
|
|
18187
18199
|
"demos/conditional/+page.svelte": `<script lang="ts">
|
|
18200
|
+
import { resolve } from '$app/paths';
|
|
18188
18201
|
import { CaretLeft } from 'phosphor-svelte';
|
|
18189
18202
|
import { Conditional, Button } from 'alus-ui';
|
|
18190
18203
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -18205,7 +18218,7 @@ sum(1, 2);\`;
|
|
|
18205
18218
|
</svelte:head>
|
|
18206
18219
|
|
|
18207
18220
|
<a
|
|
18208
|
-
href=
|
|
18221
|
+
href={resolve('/')}
|
|
18209
18222
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
18210
18223
|
>
|
|
18211
18224
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -18285,6 +18298,7 @@ sum(1, 2);\`;
|
|
|
18285
18298
|
</main>
|
|
18286
18299
|
`,
|
|
18287
18300
|
"demos/context-menu/+page.svelte": `<script lang="ts">
|
|
18301
|
+
import { resolve } from '$app/paths';
|
|
18288
18302
|
import { CaretLeft, Copy, Scissors, Clipboard, Trash, ArrowsClockwise } from 'phosphor-svelte';
|
|
18289
18303
|
import { ContextMenu, type ContextMenuItemEntry } from 'alus-ui';
|
|
18290
18304
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -18336,7 +18350,7 @@ sum(1, 2);\`;
|
|
|
18336
18350
|
</svelte:head>
|
|
18337
18351
|
|
|
18338
18352
|
<a
|
|
18339
|
-
href=
|
|
18353
|
+
href={resolve('/')}
|
|
18340
18354
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
18341
18355
|
>
|
|
18342
18356
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -18416,6 +18430,7 @@ sum(1, 2);\`;
|
|
|
18416
18430
|
</main>
|
|
18417
18431
|
`,
|
|
18418
18432
|
"demos/data-list/+page.svelte": `<script lang="ts">
|
|
18433
|
+
import { resolve } from '$app/paths';
|
|
18419
18434
|
import { CaretLeft } from 'phosphor-svelte';
|
|
18420
18435
|
import { DataList, DataListTerm, DataListDescription } from 'alus-ui';
|
|
18421
18436
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -18433,7 +18448,7 @@ sum(1, 2);\`;
|
|
|
18433
18448
|
</svelte:head>
|
|
18434
18449
|
|
|
18435
18450
|
<a
|
|
18436
|
-
href=
|
|
18451
|
+
href={resolve('/')}
|
|
18437
18452
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
18438
18453
|
>
|
|
18439
18454
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -18488,6 +18503,7 @@ sum(1, 2);\`;
|
|
|
18488
18503
|
</main>
|
|
18489
18504
|
`,
|
|
18490
18505
|
"demos/date-picker/+page.svelte": `<script lang="ts">
|
|
18506
|
+
import { resolve } from '$app/paths';
|
|
18491
18507
|
import { CaretLeft, Calendar as CalIcon, Lock } from 'phosphor-svelte';
|
|
18492
18508
|
import { DatePicker } from 'alus-ui';
|
|
18493
18509
|
import { type DateValue, getLocalTimeZone, today } from '@internationalized/date';
|
|
@@ -18545,7 +18561,7 @@ sum(1, 2);\`;
|
|
|
18545
18561
|
</svelte:head>
|
|
18546
18562
|
|
|
18547
18563
|
<a
|
|
18548
|
-
href=
|
|
18564
|
+
href={resolve('/')}
|
|
18549
18565
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
18550
18566
|
>
|
|
18551
18567
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -18773,6 +18789,7 @@ sum(1, 2);\`;
|
|
|
18773
18789
|
</main>
|
|
18774
18790
|
`,
|
|
18775
18791
|
"demos/date-range/+page.svelte": `<script lang="ts">
|
|
18792
|
+
import { resolve } from '$app/paths';
|
|
18776
18793
|
import { CaretLeft } from 'phosphor-svelte';
|
|
18777
18794
|
import { DateRange, type DateRangeValue } from 'alus-ui';
|
|
18778
18795
|
import { type DateValue, getLocalTimeZone, today } from '@internationalized/date';
|
|
@@ -18836,7 +18853,7 @@ sum(1, 2);\`;
|
|
|
18836
18853
|
</svelte:head>
|
|
18837
18854
|
|
|
18838
18855
|
<a
|
|
18839
|
-
href=
|
|
18856
|
+
href={resolve('/')}
|
|
18840
18857
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
18841
18858
|
>
|
|
18842
18859
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -18951,9 +18968,10 @@ sum(1, 2);\`;
|
|
|
18951
18968
|
</main>
|
|
18952
18969
|
`,
|
|
18953
18970
|
"demos/date-range-picker/+page.svelte": `<script lang="ts">
|
|
18971
|
+
import { resolve } from '$app/paths';
|
|
18954
18972
|
import { CaretLeft, CalendarBlank } from 'phosphor-svelte';
|
|
18955
18973
|
import { DateRangePicker } from 'alus-ui';
|
|
18956
|
-
import { type DateValue
|
|
18974
|
+
import { type DateValue } from '@internationalized/date';
|
|
18957
18975
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
18958
18976
|
|
|
18959
18977
|
const code = \`<script lang="ts">
|
|
@@ -18965,9 +18983,6 @@ sum(1, 2);\`;
|
|
|
18965
18983
|
|
|
18966
18984
|
<DateRangePicker bind:start bind:end placeholder="Pick dates\u2026" aria-label="Trip dates" />\`;
|
|
18967
18985
|
|
|
18968
|
-
const tz = getLocalTimeZone();
|
|
18969
|
-
const now = today(tz);
|
|
18970
|
-
|
|
18971
18986
|
let start = $state<DateValue | null>(null);
|
|
18972
18987
|
let end = $state<DateValue | null>(null);
|
|
18973
18988
|
|
|
@@ -19006,7 +19021,7 @@ sum(1, 2);\`;
|
|
|
19006
19021
|
</svelte:head>
|
|
19007
19022
|
|
|
19008
19023
|
<a
|
|
19009
|
-
href=
|
|
19024
|
+
href={resolve('/')}
|
|
19010
19025
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
19011
19026
|
>
|
|
19012
19027
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -19104,6 +19119,7 @@ sum(1, 2);\`;
|
|
|
19104
19119
|
</main>
|
|
19105
19120
|
`,
|
|
19106
19121
|
"demos/dialog/+page.svelte": `<script lang="ts">
|
|
19122
|
+
import { resolve } from '$app/paths';
|
|
19107
19123
|
import { CaretLeft } from 'phosphor-svelte';
|
|
19108
19124
|
import {
|
|
19109
19125
|
Dialog,
|
|
@@ -19130,7 +19146,7 @@ sum(1, 2);\`;
|
|
|
19130
19146
|
</svelte:head>
|
|
19131
19147
|
|
|
19132
19148
|
<a
|
|
19133
|
-
href=
|
|
19149
|
+
href={resolve('/')}
|
|
19134
19150
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
19135
19151
|
>
|
|
19136
19152
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -19199,6 +19215,7 @@ sum(1, 2);\`;
|
|
|
19199
19215
|
</main>
|
|
19200
19216
|
`,
|
|
19201
19217
|
"demos/divider/+page.svelte": `<script lang="ts">
|
|
19218
|
+
import { resolve } from '$app/paths';
|
|
19202
19219
|
import { CaretLeft } from 'phosphor-svelte';
|
|
19203
19220
|
import { Divider } from 'alus-ui';
|
|
19204
19221
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -19213,7 +19230,7 @@ sum(1, 2);\`;
|
|
|
19213
19230
|
</svelte:head>
|
|
19214
19231
|
|
|
19215
19232
|
<a
|
|
19216
|
-
href=
|
|
19233
|
+
href={resolve('/')}
|
|
19217
19234
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
19218
19235
|
>
|
|
19219
19236
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -19287,6 +19304,7 @@ sum(1, 2);\`;
|
|
|
19287
19304
|
</main>
|
|
19288
19305
|
`,
|
|
19289
19306
|
"demos/draggable/+page.svelte": `<script lang="ts">
|
|
19307
|
+
import { resolve } from '$app/paths';
|
|
19290
19308
|
import { CaretLeft } from 'phosphor-svelte';
|
|
19291
19309
|
import { Draggable, Droppable } from 'alus-ui';
|
|
19292
19310
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -19333,7 +19351,7 @@ sum(1, 2);\`;
|
|
|
19333
19351
|
</svelte:head>
|
|
19334
19352
|
|
|
19335
19353
|
<a
|
|
19336
|
-
href=
|
|
19354
|
+
href={resolve('/')}
|
|
19337
19355
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
19338
19356
|
>
|
|
19339
19357
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -19421,6 +19439,7 @@ sum(1, 2);\`;
|
|
|
19421
19439
|
</main>
|
|
19422
19440
|
`,
|
|
19423
19441
|
"demos/drawer/+page.svelte": `<script lang="ts">
|
|
19442
|
+
import { resolve } from '$app/paths';
|
|
19424
19443
|
import { CaretLeft, X } from 'phosphor-svelte';
|
|
19425
19444
|
import {
|
|
19426
19445
|
Drawer,
|
|
@@ -19449,7 +19468,7 @@ sum(1, 2);\`;
|
|
|
19449
19468
|
</svelte:head>
|
|
19450
19469
|
|
|
19451
19470
|
<a
|
|
19452
|
-
href=
|
|
19471
|
+
href={resolve('/')}
|
|
19453
19472
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
19454
19473
|
>
|
|
19455
19474
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -19540,6 +19559,7 @@ sum(1, 2);\`;
|
|
|
19540
19559
|
</main>
|
|
19541
19560
|
`,
|
|
19542
19561
|
"demos/dropdown/+page.svelte": `<script lang="ts">
|
|
19562
|
+
import { resolve } from '$app/paths';
|
|
19543
19563
|
import { CaretLeft, CaretDown } from 'phosphor-svelte';
|
|
19544
19564
|
import { Dropdown, DropdownTrigger, DropdownContent, DropdownItem } from 'alus-ui';
|
|
19545
19565
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -19561,7 +19581,7 @@ sum(1, 2);\`;
|
|
|
19561
19581
|
</svelte:head>
|
|
19562
19582
|
|
|
19563
19583
|
<a
|
|
19564
|
-
href=
|
|
19584
|
+
href={resolve('/')}
|
|
19565
19585
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
19566
19586
|
>
|
|
19567
19587
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -19645,8 +19665,9 @@ sum(1, 2);\`;
|
|
|
19645
19665
|
/>
|
|
19646
19666
|
</main>
|
|
19647
19667
|
`,
|
|
19648
|
-
"demos/droppable/+page.svelte": "<script>\n import { goto } from '$app/navigation';\n import { onMount } from 'svelte';\n onMount(() => goto('/components/draggable'));\n</script>\n\n<p>Redirecting\u2026</p>\n",
|
|
19668
|
+
"demos/droppable/+page.svelte": "<script>\n import { goto } from '$app/navigation';\n import { resolve } from '$app/paths';\n import { onMount } from 'svelte';\n onMount(() => goto(resolve('/components/draggable')));\n</script>\n\n<p>Redirecting\u2026</p>\n",
|
|
19649
19669
|
"demos/external-link/+page.svelte": `<script lang="ts">
|
|
19670
|
+
import { resolve } from '$app/paths';
|
|
19650
19671
|
import { CaretLeft, ArrowSquareOut } from 'phosphor-svelte';
|
|
19651
19672
|
import { ExternalLink } from 'alus-ui';
|
|
19652
19673
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -19661,7 +19682,7 @@ sum(1, 2);\`;
|
|
|
19661
19682
|
</svelte:head>
|
|
19662
19683
|
|
|
19663
19684
|
<a
|
|
19664
|
-
href=
|
|
19685
|
+
href={resolve('/')}
|
|
19665
19686
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
19666
19687
|
>
|
|
19667
19688
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -19740,6 +19761,7 @@ sum(1, 2);\`;
|
|
|
19740
19761
|
</main>
|
|
19741
19762
|
`,
|
|
19742
19763
|
"demos/fieldset/+page.svelte": `<script lang="ts">
|
|
19764
|
+
import { resolve } from '$app/paths';
|
|
19743
19765
|
import { CaretLeft } from 'phosphor-svelte';
|
|
19744
19766
|
import { Fieldset, Input } from 'alus-ui';
|
|
19745
19767
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -19759,7 +19781,7 @@ sum(1, 2);\`;
|
|
|
19759
19781
|
</svelte:head>
|
|
19760
19782
|
|
|
19761
19783
|
<a
|
|
19762
|
-
href=
|
|
19784
|
+
href={resolve('/')}
|
|
19763
19785
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
19764
19786
|
>
|
|
19765
19787
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -19862,6 +19884,7 @@ sum(1, 2);\`;
|
|
|
19862
19884
|
</main>
|
|
19863
19885
|
`,
|
|
19864
19886
|
"demos/file-input/+page.svelte": `<script lang="ts">
|
|
19887
|
+
import { resolve } from '$app/paths';
|
|
19865
19888
|
import { CaretLeft, UploadSimple } from 'phosphor-svelte';
|
|
19866
19889
|
import { FileInput, Label } from 'alus-ui';
|
|
19867
19890
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -19886,7 +19909,7 @@ sum(1, 2);\`;
|
|
|
19886
19909
|
</svelte:head>
|
|
19887
19910
|
|
|
19888
19911
|
<a
|
|
19889
|
-
href=
|
|
19912
|
+
href={resolve('/')}
|
|
19890
19913
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
19891
19914
|
>
|
|
19892
19915
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -19945,7 +19968,7 @@ sum(1, 2);\`;
|
|
|
19945
19968
|
</button>
|
|
19946
19969
|
{#if f?.length}
|
|
19947
19970
|
<ul class="mt-3 space-y-1 text-sm text-(--charcoal)/70">
|
|
19948
|
-
{#each Array.from(f) as file}
|
|
19971
|
+
{#each Array.from(f) as file, i (i)}
|
|
19949
19972
|
<li>{file.name}</li>
|
|
19950
19973
|
{/each}
|
|
19951
19974
|
</ul>
|
|
@@ -19984,6 +20007,7 @@ sum(1, 2);\`;
|
|
|
19984
20007
|
</main>
|
|
19985
20008
|
`,
|
|
19986
20009
|
"demos/focus-trap/+page.svelte": `<script lang="ts">
|
|
20010
|
+
import { resolve } from '$app/paths';
|
|
19987
20011
|
import { CaretLeft } from 'phosphor-svelte';
|
|
19988
20012
|
import { FocusTrap, Portal } from 'alus-ui';
|
|
19989
20013
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -20006,7 +20030,7 @@ sum(1, 2);\`;
|
|
|
20006
20030
|
</svelte:head>
|
|
20007
20031
|
|
|
20008
20032
|
<a
|
|
20009
|
-
href=
|
|
20033
|
+
href={resolve('/')}
|
|
20010
20034
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
20011
20035
|
>
|
|
20012
20036
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -20114,6 +20138,7 @@ sum(1, 2);\`;
|
|
|
20114
20138
|
</main>
|
|
20115
20139
|
`,
|
|
20116
20140
|
"demos/form/+page.svelte": `<script lang="ts">
|
|
20141
|
+
import { resolve } from '$app/paths';
|
|
20117
20142
|
import { CaretLeft } from 'phosphor-svelte';
|
|
20118
20143
|
import { Form, Input, Textarea, Button, FieldError } from 'alus-ui';
|
|
20119
20144
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -20156,7 +20181,7 @@ sum(1, 2);\`;
|
|
|
20156
20181
|
</svelte:head>
|
|
20157
20182
|
|
|
20158
20183
|
<a
|
|
20159
|
-
href=
|
|
20184
|
+
href={resolve('/')}
|
|
20160
20185
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
20161
20186
|
>
|
|
20162
20187
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -20304,6 +20329,7 @@ sum(1, 2);\`;
|
|
|
20304
20329
|
</main>
|
|
20305
20330
|
`,
|
|
20306
20331
|
"demos/frame/+page.svelte": `<script lang="ts">
|
|
20332
|
+
import { resolve } from '$app/paths';
|
|
20307
20333
|
import { CaretLeft } from 'phosphor-svelte';
|
|
20308
20334
|
import { Frame } from 'alus-ui';
|
|
20309
20335
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -20318,7 +20344,7 @@ sum(1, 2);\`;
|
|
|
20318
20344
|
</svelte:head>
|
|
20319
20345
|
|
|
20320
20346
|
<a
|
|
20321
|
-
href=
|
|
20347
|
+
href={resolve('/')}
|
|
20322
20348
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
20323
20349
|
>
|
|
20324
20350
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -20402,6 +20428,7 @@ sum(1, 2);\`;
|
|
|
20402
20428
|
</main>
|
|
20403
20429
|
`,
|
|
20404
20430
|
"demos/icon-button/+page.svelte": `<script lang="ts">
|
|
20431
|
+
import { resolve } from '$app/paths';
|
|
20405
20432
|
import { CaretLeft, Heart, Bell, Gear, Trash, Plus, Star } from 'phosphor-svelte';
|
|
20406
20433
|
import { IconButton } from 'alus-ui';
|
|
20407
20434
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -20419,7 +20446,7 @@ sum(1, 2);\`;
|
|
|
20419
20446
|
</svelte:head>
|
|
20420
20447
|
|
|
20421
20448
|
<a
|
|
20422
|
-
href=
|
|
20449
|
+
href={resolve('/')}
|
|
20423
20450
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
20424
20451
|
>
|
|
20425
20452
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -20534,6 +20561,7 @@ sum(1, 2);\`;
|
|
|
20534
20561
|
</main>
|
|
20535
20562
|
`,
|
|
20536
20563
|
"demos/image/+page.svelte": `<script lang="ts">
|
|
20564
|
+
import { resolve } from '$app/paths';
|
|
20537
20565
|
import { CaretLeft, ImageBroken } from 'phosphor-svelte';
|
|
20538
20566
|
import { Image } from 'alus-ui';
|
|
20539
20567
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -20552,7 +20580,7 @@ sum(1, 2);\`;
|
|
|
20552
20580
|
</svelte:head>
|
|
20553
20581
|
|
|
20554
20582
|
<a
|
|
20555
|
-
href=
|
|
20583
|
+
href={resolve('/')}
|
|
20556
20584
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
20557
20585
|
>
|
|
20558
20586
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -20636,6 +20664,7 @@ sum(1, 2);\`;
|
|
|
20636
20664
|
</main>
|
|
20637
20665
|
`,
|
|
20638
20666
|
"demos/infinite-scroll/+page.svelte": `<script lang="ts">
|
|
20667
|
+
import { resolve } from '$app/paths';
|
|
20639
20668
|
import { CaretLeft, CircleNotch, WarningCircle, ArrowClockwise } from 'phosphor-svelte';
|
|
20640
20669
|
import { InfiniteScroll, Button } from 'alus-ui';
|
|
20641
20670
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -20699,7 +20728,7 @@ sum(1, 2);\`;
|
|
|
20699
20728
|
</svelte:head>
|
|
20700
20729
|
|
|
20701
20730
|
<a
|
|
20702
|
-
href=
|
|
20731
|
+
href={resolve('/')}
|
|
20703
20732
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
20704
20733
|
>
|
|
20705
20734
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -20840,6 +20869,7 @@ sum(1, 2);\`;
|
|
|
20840
20869
|
</main>
|
|
20841
20870
|
`,
|
|
20842
20871
|
"demos/inline-message/+page.svelte": `<script lang="ts">
|
|
20872
|
+
import { resolve } from '$app/paths';
|
|
20843
20873
|
import { CaretLeft, Info, CheckCircle, Warning, XCircle } from 'phosphor-svelte';
|
|
20844
20874
|
import { InlineMessage, Input, Button } from 'alus-ui';
|
|
20845
20875
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -20862,7 +20892,7 @@ sum(1, 2);\`;
|
|
|
20862
20892
|
</svelte:head>
|
|
20863
20893
|
|
|
20864
20894
|
<a
|
|
20865
|
-
href=
|
|
20895
|
+
href={resolve('/')}
|
|
20866
20896
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
20867
20897
|
>
|
|
20868
20898
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -20984,6 +21014,7 @@ sum(1, 2);\`;
|
|
|
20984
21014
|
</main>
|
|
20985
21015
|
`,
|
|
20986
21016
|
"demos/input/+page.svelte": `<script lang="ts">
|
|
21017
|
+
import { resolve } from '$app/paths';
|
|
20987
21018
|
import { CaretLeft, Warning, Check } from 'phosphor-svelte';
|
|
20988
21019
|
import { Input } from 'alus-ui';
|
|
20989
21020
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -21043,7 +21074,7 @@ sum(1, 2);\`;
|
|
|
21043
21074
|
</svelte:head>
|
|
21044
21075
|
|
|
21045
21076
|
<a
|
|
21046
|
-
href=
|
|
21077
|
+
href={resolve('/')}
|
|
21047
21078
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
21048
21079
|
>
|
|
21049
21080
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -21503,6 +21534,7 @@ sum(1, 2);\`;
|
|
|
21503
21534
|
</main>
|
|
21504
21535
|
`,
|
|
21505
21536
|
"demos/input-group/+page.svelte": `<script lang="ts">
|
|
21537
|
+
import { resolve } from '$app/paths';
|
|
21506
21538
|
import { CaretLeft, At, MagnifyingGlass, CurrencyDollar } from 'phosphor-svelte';
|
|
21507
21539
|
import { InputGroup, Input } from 'alus-ui';
|
|
21508
21540
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -21519,7 +21551,7 @@ sum(1, 2);\`;
|
|
|
21519
21551
|
</svelte:head>
|
|
21520
21552
|
|
|
21521
21553
|
<a
|
|
21522
|
-
href=
|
|
21554
|
+
href={resolve('/')}
|
|
21523
21555
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
21524
21556
|
>
|
|
21525
21557
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -21615,6 +21647,7 @@ sum(1, 2);\`;
|
|
|
21615
21647
|
</main>
|
|
21616
21648
|
`,
|
|
21617
21649
|
"demos/kbd/+page.svelte": `<script lang="ts">
|
|
21650
|
+
import { resolve } from '$app/paths';
|
|
21618
21651
|
import { CaretLeft } from 'phosphor-svelte';
|
|
21619
21652
|
import { Kbd } from 'alus-ui';
|
|
21620
21653
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -21629,7 +21662,7 @@ sum(1, 2);\`;
|
|
|
21629
21662
|
</svelte:head>
|
|
21630
21663
|
|
|
21631
21664
|
<a
|
|
21632
|
-
href=
|
|
21665
|
+
href={resolve('/')}
|
|
21633
21666
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
21634
21667
|
>
|
|
21635
21668
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -21718,6 +21751,7 @@ sum(1, 2);\`;
|
|
|
21718
21751
|
</main>
|
|
21719
21752
|
`,
|
|
21720
21753
|
"demos/label/+page.svelte": `<script lang="ts">
|
|
21754
|
+
import { resolve } from '$app/paths';
|
|
21721
21755
|
import { CaretLeft } from 'phosphor-svelte';
|
|
21722
21756
|
import { Label, Input } from 'alus-ui';
|
|
21723
21757
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -21731,7 +21765,7 @@ sum(1, 2);\`;
|
|
|
21731
21765
|
</svelte:head>
|
|
21732
21766
|
|
|
21733
21767
|
<a
|
|
21734
|
-
href=
|
|
21768
|
+
href={resolve('/')}
|
|
21735
21769
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
21736
21770
|
>
|
|
21737
21771
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -21811,6 +21845,7 @@ sum(1, 2);\`;
|
|
|
21811
21845
|
</main>
|
|
21812
21846
|
`,
|
|
21813
21847
|
"demos/layout/+page.svelte": `<script lang="ts">
|
|
21848
|
+
import { resolve } from '$app/paths';
|
|
21814
21849
|
import { CaretLeft } from 'phosphor-svelte';
|
|
21815
21850
|
import { Stack, Flex, Grid, Container, Spacer, Columns } from 'alus-ui';
|
|
21816
21851
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -21847,7 +21882,7 @@ sum(1, 2);\`;
|
|
|
21847
21882
|
</svelte:head>
|
|
21848
21883
|
|
|
21849
21884
|
<a
|
|
21850
|
-
href=
|
|
21885
|
+
href={resolve('/')}
|
|
21851
21886
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
21852
21887
|
>
|
|
21853
21888
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -21874,7 +21909,7 @@ sum(1, 2);\`;
|
|
|
21874
21909
|
<h2 class="font-display mb-6 text-2xl text-(--ink)">Stack \u2014 vertical</h2>
|
|
21875
21910
|
<div class="japanese-border bg-white/50 p-8 backdrop-blur-sm">
|
|
21876
21911
|
<Stack gap="0.75rem" align="stretch">
|
|
21877
|
-
{#each tiles.slice(0, 4) as n}
|
|
21912
|
+
{#each tiles.slice(0, 4) as n, i (i)}
|
|
21878
21913
|
<div class="{card} h-12">{n}</div>
|
|
21879
21914
|
{/each}
|
|
21880
21915
|
</Stack>
|
|
@@ -21885,7 +21920,7 @@ sum(1, 2);\`;
|
|
|
21885
21920
|
<h2 class="font-display mb-6 text-2xl text-(--ink)">Stack \u2014 horizontal with wrap</h2>
|
|
21886
21921
|
<div class="japanese-border bg-white/50 p-8 backdrop-blur-sm">
|
|
21887
21922
|
<Stack direction="horizontal" gap="0.5rem" wrap>
|
|
21888
|
-
{#each tiles as n}
|
|
21923
|
+
{#each tiles as n, i (i)}
|
|
21889
21924
|
<div class="{card} h-12 w-24">{n}</div>
|
|
21890
21925
|
{/each}
|
|
21891
21926
|
</Stack>
|
|
@@ -21922,7 +21957,7 @@ sum(1, 2);\`;
|
|
|
21922
21957
|
<h2 class="font-display mb-6 text-2xl text-(--ink)">Grid \u2014 fixed columns</h2>
|
|
21923
21958
|
<div class="japanese-border bg-white/50 p-8 backdrop-blur-sm">
|
|
21924
21959
|
<Grid cols={4} gap="0.75rem">
|
|
21925
|
-
{#each tiles as n}
|
|
21960
|
+
{#each tiles as n, i (i)}
|
|
21926
21961
|
<div class="{card} h-20">{n}</div>
|
|
21927
21962
|
{/each}
|
|
21928
21963
|
</Grid>
|
|
@@ -21933,7 +21968,7 @@ sum(1, 2);\`;
|
|
|
21933
21968
|
<h2 class="font-display mb-6 text-2xl text-(--ink)">Grid \u2014 auto-fill with minColWidth</h2>
|
|
21934
21969
|
<div class="japanese-border bg-white/50 p-8 backdrop-blur-sm">
|
|
21935
21970
|
<Grid minColWidth="140px" gap="0.75rem">
|
|
21936
|
-
{#each tiles as n}
|
|
21971
|
+
{#each tiles as n, i (i)}
|
|
21937
21972
|
<div class="{card} h-20">{n}</div>
|
|
21938
21973
|
{/each}
|
|
21939
21974
|
</Grid>
|
|
@@ -21960,7 +21995,7 @@ sum(1, 2);\`;
|
|
|
21960
21995
|
<h2 class="font-display mb-6 text-2xl text-(--ink)">Columns \u2014 multi-column text flow</h2>
|
|
21961
21996
|
<div class="japanese-border bg-white/50 p-8 backdrop-blur-sm">
|
|
21962
21997
|
<Columns count={3} gap="2rem" class="text-sm text-(--charcoal)/80">
|
|
21963
|
-
{#each paragraphs as p, i}
|
|
21998
|
+
{#each paragraphs as p, i (i)}
|
|
21964
21999
|
<p class="mb-3" style={i === 0 ? '' : 'break-inside:avoid;'}>{p}</p>
|
|
21965
22000
|
{/each}
|
|
21966
22001
|
</Columns>
|
|
@@ -22019,6 +22054,7 @@ sum(1, 2);\`;
|
|
|
22019
22054
|
</main>
|
|
22020
22055
|
`,
|
|
22021
22056
|
"demos/lightbox/+page.svelte": `<script lang="ts">
|
|
22057
|
+
import { resolve } from '$app/paths';
|
|
22022
22058
|
import { CaretLeft, X, CaretLeft as Prev, CaretRight as Next } from 'phosphor-svelte';
|
|
22023
22059
|
import { Lightbox, type LightboxImage } from 'alus-ui';
|
|
22024
22060
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -22067,7 +22103,7 @@ sum(1, 2);\`;
|
|
|
22067
22103
|
</svelte:head>
|
|
22068
22104
|
|
|
22069
22105
|
<a
|
|
22070
|
-
href=
|
|
22106
|
+
href={resolve('/')}
|
|
22071
22107
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
22072
22108
|
>
|
|
22073
22109
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -22091,7 +22127,7 @@ sum(1, 2);\`;
|
|
|
22091
22127
|
<section class="mb-16">
|
|
22092
22128
|
<div class="japanese-border bg-white/50 p-8 backdrop-blur-sm">
|
|
22093
22129
|
<div class="grid grid-cols-3 gap-2">
|
|
22094
|
-
{#each images as img, i}
|
|
22130
|
+
{#each images as img, i (i)}
|
|
22095
22131
|
<button
|
|
22096
22132
|
class="overflow-hidden rounded border border-(--charcoal)/15"
|
|
22097
22133
|
onclick={() => openAt(i)}
|
|
@@ -22170,6 +22206,7 @@ sum(1, 2);\`;
|
|
|
22170
22206
|
</Lightbox>
|
|
22171
22207
|
`,
|
|
22172
22208
|
"demos/link/+page.svelte": `<script lang="ts">
|
|
22209
|
+
import { resolve } from '$app/paths';
|
|
22173
22210
|
import { CaretLeft, ArrowSquareOut } from 'phosphor-svelte';
|
|
22174
22211
|
import { Link } from 'alus-ui';
|
|
22175
22212
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -22183,7 +22220,7 @@ sum(1, 2);\`;
|
|
|
22183
22220
|
</svelte:head>
|
|
22184
22221
|
|
|
22185
22222
|
<a
|
|
22186
|
-
href=
|
|
22223
|
+
href={resolve('/')}
|
|
22187
22224
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
22188
22225
|
>
|
|
22189
22226
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -22213,7 +22250,7 @@ sum(1, 2);\`;
|
|
|
22213
22250
|
|
|
22214
22251
|
<div class="japanese-border space-y-4 bg-white/50 p-8 backdrop-blur-sm">
|
|
22215
22252
|
<p>
|
|
22216
|
-
<Link href=
|
|
22253
|
+
<Link href={resolve('/')} class="text-(--indigo-dye) underline hover:text-(--vermilion)">
|
|
22217
22254
|
Internal link
|
|
22218
22255
|
</Link>
|
|
22219
22256
|
\u2014 points within the app.
|
|
@@ -22230,7 +22267,7 @@ sum(1, 2);\`;
|
|
|
22230
22267
|
</p>
|
|
22231
22268
|
<p>
|
|
22232
22269
|
<Link
|
|
22233
|
-
href=
|
|
22270
|
+
href={resolve('/components')}
|
|
22234
22271
|
current="page"
|
|
22235
22272
|
class="text-(--vermilion) underline aria-[current=page]:font-semibold"
|
|
22236
22273
|
>
|
|
@@ -22268,6 +22305,7 @@ sum(1, 2);\`;
|
|
|
22268
22305
|
</main>
|
|
22269
22306
|
`,
|
|
22270
22307
|
"demos/list/+page.svelte": `<script lang="ts">
|
|
22308
|
+
import { resolve } from '$app/paths';
|
|
22271
22309
|
import { CaretLeft, Circle } from 'phosphor-svelte';
|
|
22272
22310
|
import { List, ListItem } from 'alus-ui';
|
|
22273
22311
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -22287,7 +22325,7 @@ sum(1, 2);\`;
|
|
|
22287
22325
|
</svelte:head>
|
|
22288
22326
|
|
|
22289
22327
|
<a
|
|
22290
|
-
href=
|
|
22328
|
+
href={resolve('/')}
|
|
22291
22329
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
22292
22330
|
>
|
|
22293
22331
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -22353,6 +22391,7 @@ sum(1, 2);\`;
|
|
|
22353
22391
|
</main>
|
|
22354
22392
|
`,
|
|
22355
22393
|
"demos/live-region/+page.svelte": `<script lang="ts">
|
|
22394
|
+
import { resolve } from '$app/paths';
|
|
22356
22395
|
import { CaretLeft } from 'phosphor-svelte';
|
|
22357
22396
|
import { LiveRegion, Button } from 'alus-ui';
|
|
22358
22397
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
@@ -22379,7 +22418,7 @@ sum(1, 2);\`;
|
|
|
22379
22418
|
</svelte:head>
|
|
22380
22419
|
|
|
22381
22420
|
<a
|
|
22382
|
-
href=
|
|
22421
|
+
href={resolve('/')}
|
|
22383
22422
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
22384
22423
|
>
|
|
22385
22424
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -22465,6 +22504,7 @@ sum(1, 2);\`;
|
|
|
22465
22504
|
import { CaretLeft, CaretDown, PencilSimple, Trash, Copy, Share } from 'phosphor-svelte';
|
|
22466
22505
|
import { Menu, MenuTrigger, MenuContent, MenuItem } from 'alus-ui';
|
|
22467
22506
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
22507
|
+
import { resolve } from '$app/paths';
|
|
22468
22508
|
|
|
22469
22509
|
const code = \`<Menu>
|
|
22470
22510
|
<MenuTrigger>File</MenuTrigger>
|
|
@@ -22483,7 +22523,7 @@ sum(1, 2);\`;
|
|
|
22483
22523
|
</svelte:head>
|
|
22484
22524
|
|
|
22485
22525
|
<a
|
|
22486
|
-
href=
|
|
22526
|
+
href={resolve('/')}
|
|
22487
22527
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
22488
22528
|
>
|
|
22489
22529
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -22607,6 +22647,7 @@ sum(1, 2);\`;
|
|
|
22607
22647
|
ModalClose
|
|
22608
22648
|
} from 'alus-ui';
|
|
22609
22649
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
22650
|
+
import { resolve } from '$app/paths';
|
|
22610
22651
|
|
|
22611
22652
|
const code = \`<Modal>
|
|
22612
22653
|
<ModalTrigger>Open</ModalTrigger>
|
|
@@ -22624,7 +22665,7 @@ sum(1, 2);\`;
|
|
|
22624
22665
|
</svelte:head>
|
|
22625
22666
|
|
|
22626
22667
|
<a
|
|
22627
|
-
href=
|
|
22668
|
+
href={resolve('/')}
|
|
22628
22669
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
22629
22670
|
>
|
|
22630
22671
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -22724,6 +22765,7 @@ sum(1, 2);\`;
|
|
|
22724
22765
|
import { CaretLeft, House, Compass, BookOpen, Gear } from 'phosphor-svelte';
|
|
22725
22766
|
import { Navigation } from 'alus-ui';
|
|
22726
22767
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
22768
|
+
import { resolve } from '$app/paths';
|
|
22727
22769
|
|
|
22728
22770
|
const code = \`<Navigation aria-label="Primary">
|
|
22729
22771
|
<a href="/" aria-current="page">Home</a>
|
|
@@ -22737,7 +22779,7 @@ sum(1, 2);\`;
|
|
|
22737
22779
|
</svelte:head>
|
|
22738
22780
|
|
|
22739
22781
|
<a
|
|
22740
|
-
href=
|
|
22782
|
+
href={resolve('/')}
|
|
22741
22783
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
22742
22784
|
>
|
|
22743
22785
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -22767,26 +22809,26 @@ sum(1, 2);\`;
|
|
|
22767
22809
|
class="flex items-center gap-1 rounded border border-(--charcoal)/15 bg-white p-1"
|
|
22768
22810
|
>
|
|
22769
22811
|
<a
|
|
22770
|
-
href=
|
|
22812
|
+
href={resolve('/')}
|
|
22771
22813
|
aria-current="page"
|
|
22772
22814
|
class="inline-flex items-center gap-2 rounded px-3 py-1.5 text-sm text-(--ink) aria-[current=page]:bg-(--indigo-dye) aria-[current=page]:text-white"
|
|
22773
22815
|
>
|
|
22774
22816
|
<House class="h-4 w-4" />Home
|
|
22775
22817
|
</a>
|
|
22776
22818
|
<a
|
|
22777
|
-
href=
|
|
22819
|
+
href={resolve('/components')}
|
|
22778
22820
|
class="inline-flex items-center gap-2 rounded px-3 py-1.5 text-sm text-(--ink) hover:bg-(--cream)"
|
|
22779
22821
|
>
|
|
22780
22822
|
<Compass class="h-4 w-4" />Components
|
|
22781
22823
|
</a>
|
|
22782
22824
|
<a
|
|
22783
|
-
href=
|
|
22825
|
+
href={resolve('/docs')}
|
|
22784
22826
|
class="inline-flex items-center gap-2 rounded px-3 py-1.5 text-sm text-(--ink) hover:bg-(--cream)"
|
|
22785
22827
|
>
|
|
22786
22828
|
<BookOpen class="h-4 w-4" />Docs
|
|
22787
22829
|
</a>
|
|
22788
22830
|
<a
|
|
22789
|
-
href=
|
|
22831
|
+
href={resolve('/settings')}
|
|
22790
22832
|
class="inline-flex items-center gap-2 rounded px-3 py-1.5 text-sm text-(--ink) hover:bg-(--cream)"
|
|
22791
22833
|
>
|
|
22792
22834
|
<Gear class="h-4 w-4" />Settings
|
|
@@ -22838,6 +22880,7 @@ sum(1, 2);\`;
|
|
|
22838
22880
|
import { CaretLeft, Bell, BellRinging } from 'phosphor-svelte';
|
|
22839
22881
|
import { NotificationBell, Button } from 'alus-ui';
|
|
22840
22882
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
22883
|
+
import { resolve } from '$app/paths';
|
|
22841
22884
|
|
|
22842
22885
|
const code = \`<NotificationBell count={3} max={99} onclick={open}>
|
|
22843
22886
|
{#snippet children({ hasUnread })}
|
|
@@ -22855,7 +22898,7 @@ sum(1, 2);\`;
|
|
|
22855
22898
|
</svelte:head>
|
|
22856
22899
|
|
|
22857
22900
|
<a
|
|
22858
|
-
href=
|
|
22901
|
+
href={resolve('/')}
|
|
22859
22902
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
22860
22903
|
>
|
|
22861
22904
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -22920,9 +22963,7 @@ sum(1, 2);\`;
|
|
|
22920
22963
|
class="relative rounded-full border border-(--charcoal)/15 bg-white p-3 text-(--ink) hover:border-(--vermilion)"
|
|
22921
22964
|
badgeClass="absolute -top-1 -right-1 flex h-5 min-w-5 items-center justify-center rounded-full bg-(--vermilion) px-1 text-[10px] font-bold text-white"
|
|
22922
22965
|
>
|
|
22923
|
-
|
|
22924
|
-
<BellRinging class="h-6 w-6" weight="duotone" />
|
|
22925
|
-
{/snippet}
|
|
22966
|
+
<BellRinging class="h-6 w-6" weight="duotone" />
|
|
22926
22967
|
</NotificationBell>
|
|
22927
22968
|
<span class="font-mono text-xs text-(--charcoal)/60">count: {big} (capped)</span>
|
|
22928
22969
|
<Button
|
|
@@ -22940,9 +22981,7 @@ sum(1, 2);\`;
|
|
|
22940
22981
|
class="relative rounded-full border border-(--charcoal)/15 bg-white p-3 text-(--charcoal)/50"
|
|
22941
22982
|
badgeClass="absolute -top-1 -right-1 flex h-5 min-w-5 items-center justify-center rounded-full bg-(--charcoal)/20 px-1 text-[10px] font-bold text-(--ink)"
|
|
22942
22983
|
>
|
|
22943
|
-
|
|
22944
|
-
<Bell class="h-6 w-6" />
|
|
22945
|
-
{/snippet}
|
|
22984
|
+
<Bell class="h-6 w-6" />
|
|
22946
22985
|
</NotificationBell>
|
|
22947
22986
|
<span class="font-mono text-xs text-(--charcoal)/60">count: 0 (showZero)</span>
|
|
22948
22987
|
</div>
|
|
@@ -22982,9 +23021,11 @@ sum(1, 2);\`;
|
|
|
22982
23021
|
import { CaretLeft, Plus, Minus } from 'phosphor-svelte';
|
|
22983
23022
|
import { NumberInput, Label } from 'alus-ui';
|
|
22984
23023
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
23024
|
+
import { resolve } from '$app/paths';
|
|
22985
23025
|
|
|
22986
23026
|
const code = \`<script lang="ts">
|
|
22987
23027
|
import { NumberInput } from 'alus-ui';
|
|
23028
|
+
import { resolve } from '$app/paths';
|
|
22988
23029
|
let qty = $state(1);
|
|
22989
23030
|
<\\/script>
|
|
22990
23031
|
|
|
@@ -22999,7 +23040,7 @@ sum(1, 2);\`;
|
|
|
22999
23040
|
</svelte:head>
|
|
23000
23041
|
|
|
23001
23042
|
<a
|
|
23002
|
-
href=
|
|
23043
|
+
href={resolve('/')}
|
|
23003
23044
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
23004
23045
|
>
|
|
23005
23046
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -23092,11 +23133,13 @@ sum(1, 2);\`;
|
|
|
23092
23133
|
`,
|
|
23093
23134
|
"demos/overlay/+page.svelte": `<script lang="ts">
|
|
23094
23135
|
import { CaretLeft } from 'phosphor-svelte';
|
|
23136
|
+
import { resolve } from '$app/paths';
|
|
23095
23137
|
import { Overlay, Button } from 'alus-ui';
|
|
23096
23138
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
23097
23139
|
|
|
23098
23140
|
const code = \`<script lang="ts">
|
|
23099
23141
|
import { Overlay, Button } from 'alus-ui';
|
|
23142
|
+
import { resolve } from '$app/paths';
|
|
23100
23143
|
let open = $state(false);
|
|
23101
23144
|
<\\/script>
|
|
23102
23145
|
|
|
@@ -23115,7 +23158,7 @@ sum(1, 2);\`;
|
|
|
23115
23158
|
</svelte:head>
|
|
23116
23159
|
|
|
23117
23160
|
<a
|
|
23118
|
-
href=
|
|
23161
|
+
href={resolve('/')}
|
|
23119
23162
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
23120
23163
|
>
|
|
23121
23164
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -23182,11 +23225,13 @@ sum(1, 2);\`;
|
|
|
23182
23225
|
`,
|
|
23183
23226
|
"demos/pagination/+page.svelte": `<script lang="ts">
|
|
23184
23227
|
import { CaretLeft, CaretRight, CaretDoubleLeft, CaretDoubleRight } from 'phosphor-svelte';
|
|
23228
|
+
import { resolve } from '$app/paths';
|
|
23185
23229
|
import { Pagination } from 'alus-ui';
|
|
23186
23230
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
23187
23231
|
|
|
23188
23232
|
const code = \`<script lang="ts">
|
|
23189
23233
|
import { Pagination } from 'alus-ui';
|
|
23234
|
+
import { resolve } from '$app/paths';
|
|
23190
23235
|
let page = $state(1);
|
|
23191
23236
|
<\\/script>
|
|
23192
23237
|
|
|
@@ -23200,7 +23245,7 @@ sum(1, 2);\`;
|
|
|
23200
23245
|
</svelte:head>
|
|
23201
23246
|
|
|
23202
23247
|
<a
|
|
23203
|
-
href=
|
|
23248
|
+
href={resolve('/')}
|
|
23204
23249
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
23205
23250
|
>
|
|
23206
23251
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -23249,7 +23294,7 @@ sum(1, 2);\`;
|
|
|
23249
23294
|
>
|
|
23250
23295
|
<CaretLeft class="h-4 w-4" />
|
|
23251
23296
|
</button>
|
|
23252
|
-
{#each pages as item}
|
|
23297
|
+
{#each pages as item, i (i)}
|
|
23253
23298
|
{#if item === 'ellipsis'}
|
|
23254
23299
|
<span class="px-2 text-(--charcoal)/40">\u2026</span>
|
|
23255
23300
|
{:else}
|
|
@@ -23322,6 +23367,7 @@ sum(1, 2);\`;
|
|
|
23322
23367
|
import { CaretLeft } from 'phosphor-svelte';
|
|
23323
23368
|
import { Popover, PopoverTrigger, PopoverContent } from 'alus-ui';
|
|
23324
23369
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
23370
|
+
import { resolve } from '$app/paths';
|
|
23325
23371
|
|
|
23326
23372
|
const code = \`<Popover>
|
|
23327
23373
|
<PopoverTrigger>Open</PopoverTrigger>
|
|
@@ -23336,7 +23382,7 @@ sum(1, 2);\`;
|
|
|
23336
23382
|
</svelte:head>
|
|
23337
23383
|
|
|
23338
23384
|
<a
|
|
23339
|
-
href=
|
|
23385
|
+
href={resolve('/')}
|
|
23340
23386
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
23341
23387
|
>
|
|
23342
23388
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -23411,6 +23457,7 @@ sum(1, 2);\`;
|
|
|
23411
23457
|
import { CaretLeft } from 'phosphor-svelte';
|
|
23412
23458
|
import { Portal } from 'alus-ui';
|
|
23413
23459
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
23460
|
+
import { resolve } from '$app/paths';
|
|
23414
23461
|
|
|
23415
23462
|
const code = \`{#if open}
|
|
23416
23463
|
<Portal>
|
|
@@ -23427,7 +23474,7 @@ sum(1, 2);\`;
|
|
|
23427
23474
|
</svelte:head>
|
|
23428
23475
|
|
|
23429
23476
|
<a
|
|
23430
|
-
href=
|
|
23477
|
+
href={resolve('/')}
|
|
23431
23478
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
23432
23479
|
>
|
|
23433
23480
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -23508,6 +23555,7 @@ sum(1, 2);\`;
|
|
|
23508
23555
|
import { Progress } from 'alus-ui';
|
|
23509
23556
|
import { onMount } from 'svelte';
|
|
23510
23557
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
23558
|
+
import { resolve } from '$app/paths';
|
|
23511
23559
|
|
|
23512
23560
|
const code = \`<Progress
|
|
23513
23561
|
value={45}
|
|
@@ -23531,7 +23579,7 @@ sum(1, 2);\`;
|
|
|
23531
23579
|
</svelte:head>
|
|
23532
23580
|
|
|
23533
23581
|
<a
|
|
23534
|
-
href=
|
|
23582
|
+
href={resolve('/')}
|
|
23535
23583
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
23536
23584
|
>
|
|
23537
23585
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -23616,11 +23664,13 @@ sum(1, 2);\`;
|
|
|
23616
23664
|
`,
|
|
23617
23665
|
"demos/radio/+page.svelte": `<script lang="ts">
|
|
23618
23666
|
import { CaretLeft, Check } from 'phosphor-svelte';
|
|
23667
|
+
import { resolve } from '$app/paths';
|
|
23619
23668
|
import { Radio } from 'alus-ui';
|
|
23620
23669
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
23621
23670
|
|
|
23622
23671
|
const code = \`<script lang="ts">
|
|
23623
23672
|
import { Radio } from 'alus-ui';
|
|
23673
|
+
import { resolve } from '$app/paths';
|
|
23624
23674
|
let choice = $state('email');
|
|
23625
23675
|
<\\/script>
|
|
23626
23676
|
|
|
@@ -23642,7 +23692,7 @@ sum(1, 2);\`;
|
|
|
23642
23692
|
</svelte:head>
|
|
23643
23693
|
|
|
23644
23694
|
<a
|
|
23645
|
-
href=
|
|
23695
|
+
href={resolve('/')}
|
|
23646
23696
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
23647
23697
|
>
|
|
23648
23698
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -24137,11 +24187,13 @@ sum(1, 2);\`;
|
|
|
24137
24187
|
`,
|
|
24138
24188
|
"demos/radio-group/+page.svelte": `<script lang="ts">
|
|
24139
24189
|
import { CaretLeft } from 'phosphor-svelte';
|
|
24190
|
+
import { resolve } from '$app/paths';
|
|
24140
24191
|
import { RadioGroup, Radio } from 'alus-ui';
|
|
24141
24192
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
24142
24193
|
|
|
24143
24194
|
const code = \`<script lang="ts">
|
|
24144
24195
|
import { RadioGroup, Radio } from 'alus-ui';
|
|
24196
|
+
import { resolve } from '$app/paths';
|
|
24145
24197
|
let plan = $state('pro');
|
|
24146
24198
|
<\\/script>
|
|
24147
24199
|
|
|
@@ -24161,7 +24213,7 @@ sum(1, 2);\`;
|
|
|
24161
24213
|
</svelte:head>
|
|
24162
24214
|
|
|
24163
24215
|
<a
|
|
24164
|
-
href=
|
|
24216
|
+
href={resolve('/')}
|
|
24165
24217
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
24166
24218
|
>
|
|
24167
24219
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -24221,7 +24273,7 @@ sum(1, 2);\`;
|
|
|
24221
24273
|
aria-label="Size"
|
|
24222
24274
|
class="flex gap-6"
|
|
24223
24275
|
>
|
|
24224
|
-
{#each ['s', 'm', 'l', 'xl'] as s}
|
|
24276
|
+
{#each ['s', 'm', 'l', 'xl'] as s, i (i)}
|
|
24225
24277
|
<label class="flex items-center gap-2 text-(--charcoal) uppercase">
|
|
24226
24278
|
<Radio name="size" value={s} bind:group={size} class="accent-(--vermilion)" />
|
|
24227
24279
|
<span>{s}</span>
|
|
@@ -24254,11 +24306,13 @@ sum(1, 2);\`;
|
|
|
24254
24306
|
`,
|
|
24255
24307
|
"demos/rating/+page.svelte": `<script lang="ts">
|
|
24256
24308
|
import { CaretLeft, Star } from 'phosphor-svelte';
|
|
24309
|
+
import { resolve } from '$app/paths';
|
|
24257
24310
|
import { Rating } from 'alus-ui';
|
|
24258
24311
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
24259
24312
|
|
|
24260
24313
|
const code = \`<script lang="ts">
|
|
24261
24314
|
import { Rating } from 'alus-ui';
|
|
24315
|
+
import { resolve } from '$app/paths';
|
|
24262
24316
|
let score = $state(3);
|
|
24263
24317
|
<\\/script>
|
|
24264
24318
|
|
|
@@ -24273,7 +24327,7 @@ sum(1, 2);\`;
|
|
|
24273
24327
|
</svelte:head>
|
|
24274
24328
|
|
|
24275
24329
|
<a
|
|
24276
|
-
href=
|
|
24330
|
+
href={resolve('/')}
|
|
24277
24331
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
24278
24332
|
>
|
|
24279
24333
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -24367,9 +24421,10 @@ sum(1, 2);\`;
|
|
|
24367
24421
|
</main>
|
|
24368
24422
|
`,
|
|
24369
24423
|
"demos/resizable/+page.svelte": `<script lang="ts">
|
|
24370
|
-
import { CaretLeft
|
|
24424
|
+
import { CaretLeft } from 'phosphor-svelte';
|
|
24371
24425
|
import { Resizable } from 'alus-ui';
|
|
24372
24426
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
24427
|
+
import { resolve } from '$app/paths';
|
|
24373
24428
|
|
|
24374
24429
|
const code = \`<Resizable
|
|
24375
24430
|
bind:size={width}
|
|
@@ -24390,7 +24445,7 @@ sum(1, 2);\`;
|
|
|
24390
24445
|
</svelte:head>
|
|
24391
24446
|
|
|
24392
24447
|
<a
|
|
24393
|
-
href=
|
|
24448
|
+
href={resolve('/')}
|
|
24394
24449
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
24395
24450
|
>
|
|
24396
24451
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -24479,6 +24534,7 @@ sum(1, 2);\`;
|
|
|
24479
24534
|
import { CaretLeft, Trash, MagnifyingGlass } from 'phosphor-svelte';
|
|
24480
24535
|
import { ScreenReaderOnly } from 'alus-ui';
|
|
24481
24536
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
24537
|
+
import { resolve } from '$app/paths';
|
|
24482
24538
|
|
|
24483
24539
|
const code = \`<button>
|
|
24484
24540
|
<Trash class="h-5 w-5" />
|
|
@@ -24491,7 +24547,7 @@ sum(1, 2);\`;
|
|
|
24491
24547
|
</svelte:head>
|
|
24492
24548
|
|
|
24493
24549
|
<a
|
|
24494
|
-
href=
|
|
24550
|
+
href={resolve('/')}
|
|
24495
24551
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
24496
24552
|
>
|
|
24497
24553
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -24557,11 +24613,13 @@ sum(1, 2);\`;
|
|
|
24557
24613
|
`,
|
|
24558
24614
|
"demos/search-input/+page.svelte": `<script lang="ts">
|
|
24559
24615
|
import { CaretLeft, MagnifyingGlass, X } from 'phosphor-svelte';
|
|
24616
|
+
import { resolve } from '$app/paths';
|
|
24560
24617
|
import { SearchInput, Label } from 'alus-ui';
|
|
24561
24618
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
24562
24619
|
|
|
24563
24620
|
const code = \`<script lang="ts">
|
|
24564
24621
|
import { SearchInput } from 'alus-ui';
|
|
24622
|
+
import { resolve } from '$app/paths';
|
|
24565
24623
|
let q = $state('');
|
|
24566
24624
|
<\\/script>
|
|
24567
24625
|
|
|
@@ -24576,7 +24634,7 @@ sum(1, 2);\`;
|
|
|
24576
24634
|
</svelte:head>
|
|
24577
24635
|
|
|
24578
24636
|
<a
|
|
24579
|
-
href=
|
|
24637
|
+
href={resolve('/')}
|
|
24580
24638
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
24581
24639
|
>
|
|
24582
24640
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -24677,11 +24735,13 @@ sum(1, 2);\`;
|
|
|
24677
24735
|
`,
|
|
24678
24736
|
"demos/select/+page.svelte": `<script lang="ts">
|
|
24679
24737
|
import { CaretLeft, CaretDown, Check } from 'phosphor-svelte';
|
|
24738
|
+
import { resolve } from '$app/paths';
|
|
24680
24739
|
import { Select, SelectTrigger, SelectContent, SelectOption } from 'alus-ui';
|
|
24681
24740
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
24682
24741
|
|
|
24683
24742
|
const code = \`<script lang="ts">
|
|
24684
24743
|
import { Select, SelectTrigger, SelectContent, SelectOption } from 'alus-ui';
|
|
24744
|
+
import { resolve } from '$app/paths';
|
|
24685
24745
|
let value = $state('');
|
|
24686
24746
|
<\\/script>
|
|
24687
24747
|
|
|
@@ -24728,7 +24788,7 @@ sum(1, 2);\`;
|
|
|
24728
24788
|
</svelte:head>
|
|
24729
24789
|
|
|
24730
24790
|
<a
|
|
24731
|
-
href=
|
|
24791
|
+
href={resolve('/')}
|
|
24732
24792
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
24733
24793
|
>
|
|
24734
24794
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -24918,6 +24978,7 @@ sum(1, 2);\`;
|
|
|
24918
24978
|
SheetClose
|
|
24919
24979
|
} from 'alus-ui';
|
|
24920
24980
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
24981
|
+
import { resolve } from '$app/paths';
|
|
24921
24982
|
|
|
24922
24983
|
const code = \`<Sheet side="bottom">
|
|
24923
24984
|
<SheetTrigger>Open</SheetTrigger>
|
|
@@ -24935,7 +24996,7 @@ sum(1, 2);\`;
|
|
|
24935
24996
|
</svelte:head>
|
|
24936
24997
|
|
|
24937
24998
|
<a
|
|
24938
|
-
href=
|
|
24999
|
+
href={resolve('/')}
|
|
24939
25000
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
24940
25001
|
>
|
|
24941
25002
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -25029,6 +25090,7 @@ sum(1, 2);\`;
|
|
|
25029
25090
|
import { CaretLeft } from 'phosphor-svelte';
|
|
25030
25091
|
import { Skeleton } from 'alus-ui';
|
|
25031
25092
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
25093
|
+
import { resolve } from '$app/paths';
|
|
25032
25094
|
|
|
25033
25095
|
const code = \`<Skeleton class="block h-4 w-1/3 animate-pulse rounded bg-gray-200" />
|
|
25034
25096
|
<Skeleton class="block h-32 w-full animate-pulse bg-gray-200" />\`;
|
|
@@ -25039,7 +25101,7 @@ sum(1, 2);\`;
|
|
|
25039
25101
|
</svelte:head>
|
|
25040
25102
|
|
|
25041
25103
|
<a
|
|
25042
|
-
href=
|
|
25104
|
+
href={resolve('/')}
|
|
25043
25105
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
25044
25106
|
>
|
|
25045
25107
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -25102,11 +25164,13 @@ sum(1, 2);\`;
|
|
|
25102
25164
|
`,
|
|
25103
25165
|
"demos/slider/+page.svelte": `<script lang="ts">
|
|
25104
25166
|
import { CaretLeft } from 'phosphor-svelte';
|
|
25167
|
+
import { resolve } from '$app/paths';
|
|
25105
25168
|
import { Slider, Label } from 'alus-ui';
|
|
25106
25169
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
25107
25170
|
|
|
25108
25171
|
const code = \`<script lang="ts">
|
|
25109
25172
|
import { Slider } from 'alus-ui';
|
|
25173
|
+
import { resolve } from '$app/paths';
|
|
25110
25174
|
let volume = $state(50);
|
|
25111
25175
|
<\\/script>
|
|
25112
25176
|
|
|
@@ -25121,7 +25185,7 @@ sum(1, 2);\`;
|
|
|
25121
25185
|
</svelte:head>
|
|
25122
25186
|
|
|
25123
25187
|
<a
|
|
25124
|
-
href=
|
|
25188
|
+
href={resolve('/')}
|
|
25125
25189
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
25126
25190
|
>
|
|
25127
25191
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -25193,6 +25257,7 @@ sum(1, 2);\`;
|
|
|
25193
25257
|
import { CaretLeft, DotsSixVertical } from 'phosphor-svelte';
|
|
25194
25258
|
import { Sortable } from 'alus-ui';
|
|
25195
25259
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
25260
|
+
import { resolve } from '$app/paths';
|
|
25196
25261
|
|
|
25197
25262
|
const code = \`<Sortable bind:items={tasks} getKey={(t) => t.id} aria-label="Tasks">
|
|
25198
25263
|
{#snippet item({ value, grabbed, itemAttrs })}
|
|
@@ -25218,7 +25283,7 @@ sum(1, 2);\`;
|
|
|
25218
25283
|
</svelte:head>
|
|
25219
25284
|
|
|
25220
25285
|
<a
|
|
25221
|
-
href=
|
|
25286
|
+
href={resolve('/')}
|
|
25222
25287
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
25223
25288
|
>
|
|
25224
25289
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -25340,6 +25405,7 @@ sum(1, 2);\`;
|
|
|
25340
25405
|
import { CaretLeft } from 'phosphor-svelte';
|
|
25341
25406
|
import { Spinner } from 'alus-ui';
|
|
25342
25407
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
25408
|
+
import { resolve } from '$app/paths';
|
|
25343
25409
|
|
|
25344
25410
|
const code = \`<Spinner
|
|
25345
25411
|
label="Loading content"
|
|
@@ -25352,7 +25418,7 @@ sum(1, 2);\`;
|
|
|
25352
25418
|
</svelte:head>
|
|
25353
25419
|
|
|
25354
25420
|
<a
|
|
25355
|
-
href=
|
|
25421
|
+
href={resolve('/')}
|
|
25356
25422
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
25357
25423
|
>
|
|
25358
25424
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -25425,6 +25491,7 @@ sum(1, 2);\`;
|
|
|
25425
25491
|
import { CaretLeft } from 'phosphor-svelte';
|
|
25426
25492
|
import { SplitView, SplitViewPane, SplitViewHandle } from 'alus-ui';
|
|
25427
25493
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
25494
|
+
import { resolve } from '$app/paths';
|
|
25428
25495
|
|
|
25429
25496
|
const code = \`<SplitView bind:size={pct} min={20} max={80} orientation="horizontal" aria-label="Editor">
|
|
25430
25497
|
<SplitViewPane side="first">Left</SplitViewPane>
|
|
@@ -25441,7 +25508,7 @@ sum(1, 2);\`;
|
|
|
25441
25508
|
</svelte:head>
|
|
25442
25509
|
|
|
25443
25510
|
<a
|
|
25444
|
-
href=
|
|
25511
|
+
href={resolve('/')}
|
|
25445
25512
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
25446
25513
|
>
|
|
25447
25514
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -25568,6 +25635,7 @@ sum(1, 2);\`;
|
|
|
25568
25635
|
} from 'phosphor-svelte';
|
|
25569
25636
|
import { StatCard } from 'alus-ui';
|
|
25570
25637
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
25638
|
+
import { resolve } from '$app/paths';
|
|
25571
25639
|
|
|
25572
25640
|
const code = \`<StatCard
|
|
25573
25641
|
label="Active users"
|
|
@@ -25591,7 +25659,7 @@ sum(1, 2);\`;
|
|
|
25591
25659
|
</svelte:head>
|
|
25592
25660
|
|
|
25593
25661
|
<a
|
|
25594
|
-
href=
|
|
25662
|
+
href={resolve('/')}
|
|
25595
25663
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
25596
25664
|
>
|
|
25597
25665
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -25735,6 +25803,7 @@ sum(1, 2);\`;
|
|
|
25735
25803
|
import { CaretLeft, Check } from 'phosphor-svelte';
|
|
25736
25804
|
import { Stepper, StepperStep, Button } from 'alus-ui';
|
|
25737
25805
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
25806
|
+
import { resolve } from '$app/paths';
|
|
25738
25807
|
|
|
25739
25808
|
const code = \`<Stepper value={1} steps={3}>
|
|
25740
25809
|
<StepperStep index={0}>Account</StepperStep>
|
|
@@ -25756,7 +25825,7 @@ sum(1, 2);\`;
|
|
|
25756
25825
|
</svelte:head>
|
|
25757
25826
|
|
|
25758
25827
|
<a
|
|
25759
|
-
href=
|
|
25828
|
+
href={resolve('/')}
|
|
25760
25829
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
25761
25830
|
>
|
|
25762
25831
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -25782,7 +25851,7 @@ sum(1, 2);\`;
|
|
|
25782
25851
|
|
|
25783
25852
|
<div class="japanese-border bg-white/50 p-8 backdrop-blur-sm">
|
|
25784
25853
|
<Stepper bind:current aria-label="Onboarding" class="mb-8 flex items-center gap-2">
|
|
25785
|
-
{#each steps as step, i}
|
|
25854
|
+
{#each steps as step, i (i)}
|
|
25786
25855
|
<StepperStep index={i} class="flex flex-1 items-center gap-3">
|
|
25787
25856
|
{#snippet children({ status })}
|
|
25788
25857
|
<span
|
|
@@ -25867,6 +25936,7 @@ sum(1, 2);\`;
|
|
|
25867
25936
|
import { CaretLeft, CaretRight, File, Folder, Image, Code } from 'phosphor-svelte';
|
|
25868
25937
|
import { Menu, MenuTrigger, MenuContent, MenuItem, SubMenu, type SubMenuItem } from 'alus-ui';
|
|
25869
25938
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
25939
|
+
import { resolve } from '$app/paths';
|
|
25870
25940
|
|
|
25871
25941
|
const code = \`<Menu>
|
|
25872
25942
|
<MenuTrigger>File</MenuTrigger>
|
|
@@ -25908,7 +25978,7 @@ sum(1, 2);\`;
|
|
|
25908
25978
|
</svelte:head>
|
|
25909
25979
|
|
|
25910
25980
|
<a
|
|
25911
|
-
href=
|
|
25981
|
+
href={resolve('/')}
|
|
25912
25982
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
25913
25983
|
>
|
|
25914
25984
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -25956,10 +26026,8 @@ sum(1, 2);\`;
|
|
|
25956
26026
|
separatorClass="my-1 h-px bg-(--charcoal)/15"
|
|
25957
26027
|
class="flex items-center justify-between rounded px-3 py-1.5 text-sm text-(--ink) hover:bg-(--cream) data-highlighted:bg-(--indigo-dye) data-highlighted:text-white data-[state=open]:bg-(--indigo-dye)/10"
|
|
25958
26028
|
>
|
|
25959
|
-
|
|
25960
|
-
|
|
25961
|
-
<CaretRight class="h-3 w-3" />
|
|
25962
|
-
{/snippet}
|
|
26029
|
+
<span>New</span>
|
|
26030
|
+
<CaretRight class="h-3 w-3" />
|
|
25963
26031
|
{#snippet item({ item })}
|
|
25964
26032
|
{#if item.label}
|
|
25965
26033
|
{@const Icon = iconMap[item.label]}
|
|
@@ -26015,6 +26083,7 @@ sum(1, 2);\`;
|
|
|
26015
26083
|
import { CaretLeft, ArrowLeft, ArrowRight, ArrowUp, ArrowDown } from 'phosphor-svelte';
|
|
26016
26084
|
import { Swipeable, type SwipeDirection } from 'alus-ui';
|
|
26017
26085
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
26086
|
+
import { resolve } from '$app/paths';
|
|
26018
26087
|
|
|
26019
26088
|
const code = \`<Swipeable
|
|
26020
26089
|
onSwipe={(d) => handle(d)}
|
|
@@ -26046,7 +26115,7 @@ sum(1, 2);\`;
|
|
|
26046
26115
|
</svelte:head>
|
|
26047
26116
|
|
|
26048
26117
|
<a
|
|
26049
|
-
href=
|
|
26118
|
+
href={resolve('/')}
|
|
26050
26119
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
26051
26120
|
>
|
|
26052
26121
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -26163,11 +26232,13 @@ sum(1, 2);\`;
|
|
|
26163
26232
|
`,
|
|
26164
26233
|
"demos/switch/+page.svelte": `<script lang="ts">
|
|
26165
26234
|
import { CaretLeft } from 'phosphor-svelte';
|
|
26235
|
+
import { resolve } from '$app/paths';
|
|
26166
26236
|
import { Switch, Label } from 'alus-ui';
|
|
26167
26237
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
26168
26238
|
|
|
26169
26239
|
const code = \`<script lang="ts">
|
|
26170
26240
|
import { Switch } from 'alus-ui';
|
|
26241
|
+
import { resolve } from '$app/paths';
|
|
26171
26242
|
let on = $state(true);
|
|
26172
26243
|
<\\/script>
|
|
26173
26244
|
|
|
@@ -26187,7 +26258,7 @@ sum(1, 2);\`;
|
|
|
26187
26258
|
</svelte:head>
|
|
26188
26259
|
|
|
26189
26260
|
<a
|
|
26190
|
-
href=
|
|
26261
|
+
href={resolve('/')}
|
|
26191
26262
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
26192
26263
|
>
|
|
26193
26264
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -26288,6 +26359,7 @@ sum(1, 2);\`;
|
|
|
26288
26359
|
TableCell
|
|
26289
26360
|
} from 'alus-ui';
|
|
26290
26361
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
26362
|
+
import { resolve } from '$app/paths';
|
|
26291
26363
|
|
|
26292
26364
|
const code = \`<Table>
|
|
26293
26365
|
<TableCaption>Team scoreboard</TableCaption>
|
|
@@ -26346,7 +26418,7 @@ sum(1, 2);\`;
|
|
|
26346
26418
|
</svelte:head>
|
|
26347
26419
|
|
|
26348
26420
|
<a
|
|
26349
|
-
href=
|
|
26421
|
+
href={resolve('/')}
|
|
26350
26422
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
26351
26423
|
>
|
|
26352
26424
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -26377,7 +26449,7 @@ sum(1, 2);\`;
|
|
|
26377
26449
|
</TableCaption>
|
|
26378
26450
|
<TableHead>
|
|
26379
26451
|
<TableRow>
|
|
26380
|
-
{#each [{ k: 'name', label: 'Name' }, { k: 'role', label: 'Role' }, { k: 'score', label: 'Score' }] as col}
|
|
26452
|
+
{#each [{ k: 'name', label: 'Name' }, { k: 'role', label: 'Role' }, { k: 'score', label: 'Score' }] as col (col.k)}
|
|
26381
26453
|
<TableHeader
|
|
26382
26454
|
scope="col"
|
|
26383
26455
|
sort={sortKey === col.k ? sortDir : 'none'}
|
|
@@ -26453,6 +26525,7 @@ sum(1, 2);\`;
|
|
|
26453
26525
|
import { CaretLeft } from 'phosphor-svelte';
|
|
26454
26526
|
import { Tabs, TabList, Tab, TabPanel } from 'alus-ui';
|
|
26455
26527
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
26528
|
+
import { resolve } from '$app/paths';
|
|
26456
26529
|
|
|
26457
26530
|
const code = \`<Tabs value="overview">
|
|
26458
26531
|
<TabList>
|
|
@@ -26471,7 +26544,7 @@ sum(1, 2);\`;
|
|
|
26471
26544
|
</svelte:head>
|
|
26472
26545
|
|
|
26473
26546
|
<a
|
|
26474
|
-
href=
|
|
26547
|
+
href={resolve('/')}
|
|
26475
26548
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
26476
26549
|
>
|
|
26477
26550
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -26564,6 +26637,7 @@ sum(1, 2);\`;
|
|
|
26564
26637
|
import { CaretLeft } from 'phosphor-svelte';
|
|
26565
26638
|
import { Tag } from 'alus-ui';
|
|
26566
26639
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
26640
|
+
import { resolve } from '$app/paths';
|
|
26567
26641
|
|
|
26568
26642
|
const code = \`<Tag removable onremove={() => remove(id)} aria-label="React tag">
|
|
26569
26643
|
React
|
|
@@ -26587,7 +26661,7 @@ sum(1, 2);\`;
|
|
|
26587
26661
|
</svelte:head>
|
|
26588
26662
|
|
|
26589
26663
|
<a
|
|
26590
|
-
href=
|
|
26664
|
+
href={resolve('/')}
|
|
26591
26665
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
26592
26666
|
>
|
|
26593
26667
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -26698,11 +26772,13 @@ sum(1, 2);\`;
|
|
|
26698
26772
|
`,
|
|
26699
26773
|
"demos/textarea/+page.svelte": `<script lang="ts">
|
|
26700
26774
|
import { CaretLeft } from 'phosphor-svelte';
|
|
26775
|
+
import { resolve } from '$app/paths';
|
|
26701
26776
|
import { Textarea } from 'alus-ui';
|
|
26702
26777
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
26703
26778
|
|
|
26704
26779
|
const code = \`<script lang="ts">
|
|
26705
26780
|
import { Textarea } from 'alus-ui';
|
|
26781
|
+
import { resolve } from '$app/paths';
|
|
26706
26782
|
let bio = $state('');
|
|
26707
26783
|
<\\/script>
|
|
26708
26784
|
|
|
@@ -26723,7 +26799,7 @@ sum(1, 2);\`;
|
|
|
26723
26799
|
</svelte:head>
|
|
26724
26800
|
|
|
26725
26801
|
<a
|
|
26726
|
-
href=
|
|
26802
|
+
href={resolve('/')}
|
|
26727
26803
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
26728
26804
|
>
|
|
26729
26805
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -26813,11 +26889,13 @@ sum(1, 2);\`;
|
|
|
26813
26889
|
`,
|
|
26814
26890
|
"demos/time-picker/+page.svelte": `<script lang="ts">
|
|
26815
26891
|
import { CaretLeft, Lock, WarningCircle, CheckCircle } from 'phosphor-svelte';
|
|
26892
|
+
import { resolve } from '$app/paths';
|
|
26816
26893
|
import { TimePicker, type Time } from 'alus-ui';
|
|
26817
26894
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
26818
26895
|
|
|
26819
26896
|
const code = \`<script lang="ts">
|
|
26820
26897
|
import { TimePicker, type Time } from 'alus-ui';
|
|
26898
|
+
import { resolve } from '$app/paths';
|
|
26821
26899
|
let t = $state<Time | null>({ hour: 9, minute: 30 });
|
|
26822
26900
|
<\\/script>
|
|
26823
26901
|
|
|
@@ -26843,7 +26921,7 @@ sum(1, 2);\`;
|
|
|
26843
26921
|
</svelte:head>
|
|
26844
26922
|
|
|
26845
26923
|
<a
|
|
26846
|
-
href=
|
|
26924
|
+
href={resolve('/')}
|
|
26847
26925
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
26848
26926
|
>
|
|
26849
26927
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -27033,6 +27111,7 @@ sum(1, 2);\`;
|
|
|
27033
27111
|
import { CaretLeft, Check, Circle, CircleNotch } from 'phosphor-svelte';
|
|
27034
27112
|
import { Timeline, TimelineItem } from 'alus-ui';
|
|
27035
27113
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
27114
|
+
import { resolve } from '$app/paths';
|
|
27036
27115
|
|
|
27037
27116
|
const code = \`<Timeline aria-label="Project milestones">
|
|
27038
27117
|
<TimelineItem status="completed" time="Q1" datetime="2026-01-01">
|
|
@@ -27050,7 +27129,7 @@ sum(1, 2);\`;
|
|
|
27050
27129
|
</svelte:head>
|
|
27051
27130
|
|
|
27052
27131
|
<a
|
|
27053
|
-
href=
|
|
27132
|
+
href={resolve('/')}
|
|
27054
27133
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
27055
27134
|
>
|
|
27056
27135
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -27173,6 +27252,7 @@ sum(1, 2);\`;
|
|
|
27173
27252
|
import { CaretLeft } from 'phosphor-svelte';
|
|
27174
27253
|
import { Timestamp } from 'alus-ui';
|
|
27175
27254
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
27255
|
+
import { resolve } from '$app/paths';
|
|
27176
27256
|
|
|
27177
27257
|
const code = \`<Timestamp value={Date.now() - 60_000} />
|
|
27178
27258
|
<Timestamp value={ts} mode="absolute" />
|
|
@@ -27195,7 +27275,7 @@ sum(1, 2);\`;
|
|
|
27195
27275
|
</svelte:head>
|
|
27196
27276
|
|
|
27197
27277
|
<a
|
|
27198
|
-
href=
|
|
27278
|
+
href={resolve('/')}
|
|
27199
27279
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
27200
27280
|
>
|
|
27201
27281
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -27222,7 +27302,7 @@ sum(1, 2);\`;
|
|
|
27222
27302
|
<h2 class="font-display mb-6 text-2xl text-(--ink)">Relative</h2>
|
|
27223
27303
|
<div class="japanese-border bg-white/50 p-8 backdrop-blur-sm">
|
|
27224
27304
|
<ul class="divide-y divide-(--charcoal)/10">
|
|
27225
|
-
{#each samples as s}
|
|
27305
|
+
{#each samples as s, i (i)}
|
|
27226
27306
|
<li class="flex items-center justify-between py-3">
|
|
27227
27307
|
<span class="text-(--ink)">{s.label}</span>
|
|
27228
27308
|
<Timestamp value={s.value} class="font-mono text-sm text-(--charcoal)/70" />
|
|
@@ -27292,11 +27372,13 @@ sum(1, 2);\`;
|
|
|
27292
27372
|
`,
|
|
27293
27373
|
"demos/toast/+page.svelte": `<script lang="ts">
|
|
27294
27374
|
import { CaretLeft, CheckCircle, Warning, XCircle, Info, X } from 'phosphor-svelte';
|
|
27375
|
+
import { resolve } from '$app/paths';
|
|
27295
27376
|
import { Toaster, createToaster, Button, type ToastPlacement } from 'alus-ui';
|
|
27296
27377
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
27297
27378
|
|
|
27298
27379
|
const code = \`<script lang="ts">
|
|
27299
27380
|
import { Toaster, createToaster } from 'alus-ui';
|
|
27381
|
+
import { resolve } from '$app/paths';
|
|
27300
27382
|
const tt = createToaster<{ title: string }>();
|
|
27301
27383
|
<\\/script>
|
|
27302
27384
|
|
|
@@ -27373,7 +27455,7 @@ sum(1, 2);\`;
|
|
|
27373
27455
|
</svelte:head>
|
|
27374
27456
|
|
|
27375
27457
|
<a
|
|
27376
|
-
href=
|
|
27458
|
+
href={resolve('/')}
|
|
27377
27459
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
27378
27460
|
>
|
|
27379
27461
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -27451,108 +27533,106 @@ sum(1, 2);\`;
|
|
|
27451
27533
|
</div>
|
|
27452
27534
|
{/snippet}
|
|
27453
27535
|
|
|
27454
|
-
|
|
27455
|
-
<
|
|
27456
|
-
|
|
27457
|
-
<div
|
|
27458
|
-
|
|
27459
|
-
|
|
27460
|
-
|
|
27461
|
-
|
|
27462
|
-
|
|
27463
|
-
|
|
27464
|
-
|
|
27465
|
-
|
|
27466
|
-
|
|
27467
|
-
|
|
27468
|
-
|
|
27469
|
-
|
|
27470
|
-
|
|
27471
|
-
|
|
27472
|
-
{/each}
|
|
27473
|
-
</div>
|
|
27474
|
-
<p class="mt-3 font-mono text-xs text-(--charcoal)/60">
|
|
27475
|
-
current: <code>{placement}</code>
|
|
27476
|
-
</p>
|
|
27536
|
+
<section class="mb-12">
|
|
27537
|
+
<h2 class="font-display mb-6 text-2xl text-(--ink)">Placement</h2>
|
|
27538
|
+
<div class="japanese-border bg-white/50 p-6 backdrop-blur-sm">
|
|
27539
|
+
<div role="radiogroup" aria-label="Toast placement" class="grid grid-cols-3 gap-2">
|
|
27540
|
+
{#each placements as p, i (i)}
|
|
27541
|
+
<button
|
|
27542
|
+
type="button"
|
|
27543
|
+
role="radio"
|
|
27544
|
+
aria-checked={placement === p.value}
|
|
27545
|
+
onclick={() => (placement = p.value)}
|
|
27546
|
+
class="rounded border px-3 py-2 text-sm transition-colors"
|
|
27547
|
+
style={placement === p.value
|
|
27548
|
+
? 'background:var(--indigo-dye);border-color:var(--indigo-dye);color:white;'
|
|
27549
|
+
: 'border-color:rgba(45,45,45,0.2);color:var(--ink);'}
|
|
27550
|
+
>
|
|
27551
|
+
{p.label}
|
|
27552
|
+
</button>
|
|
27553
|
+
{/each}
|
|
27477
27554
|
</div>
|
|
27478
|
-
|
|
27555
|
+
<p class="mt-3 font-mono text-xs text-(--charcoal)/60">
|
|
27556
|
+
current: <code>{placement}</code>
|
|
27557
|
+
</p>
|
|
27558
|
+
</div>
|
|
27559
|
+
</section>
|
|
27479
27560
|
|
|
27480
|
-
|
|
27481
|
-
|
|
27561
|
+
<section class="mb-16">
|
|
27562
|
+
<h2 class="font-display mb-8 text-2xl text-(--ink)">Trigger variants</h2>
|
|
27482
27563
|
|
|
27483
|
-
|
|
27484
|
-
|
|
27485
|
-
|
|
27486
|
-
|
|
27487
|
-
|
|
27488
|
-
|
|
27489
|
-
|
|
27490
|
-
|
|
27491
|
-
|
|
27492
|
-
|
|
27493
|
-
|
|
27494
|
-
|
|
27495
|
-
|
|
27496
|
-
|
|
27497
|
-
|
|
27498
|
-
|
|
27499
|
-
|
|
27500
|
-
|
|
27501
|
-
|
|
27502
|
-
|
|
27503
|
-
|
|
27504
|
-
|
|
27505
|
-
|
|
27506
|
-
|
|
27507
|
-
|
|
27508
|
-
|
|
27509
|
-
|
|
27510
|
-
|
|
27511
|
-
|
|
27512
|
-
|
|
27513
|
-
|
|
27514
|
-
|
|
27515
|
-
|
|
27516
|
-
|
|
27517
|
-
|
|
27518
|
-
|
|
27519
|
-
|
|
27520
|
-
|
|
27521
|
-
|
|
27522
|
-
}
|
|
27523
|
-
}
|
|
27524
|
-
})}
|
|
27525
|
-
class="rounded border border-(--vermilion) bg-(--vermilion) px-4 py-2 text-sm text-white"
|
|
27526
|
-
>
|
|
27527
|
-
Error + action
|
|
27528
|
-
</Button>
|
|
27529
|
-
<Button
|
|
27530
|
-
onclick={() =>
|
|
27531
|
-
tt.addToast({
|
|
27532
|
-
closeDelay: 0,
|
|
27533
|
-
data: {
|
|
27534
|
-
title: 'Persistent',
|
|
27535
|
-
description: 'Stays until dismissed.',
|
|
27536
|
-
variant: 'info'
|
|
27564
|
+
<div class="japanese-border flex flex-wrap gap-3 bg-white/50 p-8 backdrop-blur-sm">
|
|
27565
|
+
<Button
|
|
27566
|
+
onclick={() =>
|
|
27567
|
+
tt.addToast({
|
|
27568
|
+
data: {
|
|
27569
|
+
title: 'Saved',
|
|
27570
|
+
description: 'Settings synced to the cloud.',
|
|
27571
|
+
variant: 'success'
|
|
27572
|
+
}
|
|
27573
|
+
})}
|
|
27574
|
+
class="rounded border border-(--matcha) bg-(--matcha) px-4 py-2 text-sm text-white"
|
|
27575
|
+
>
|
|
27576
|
+
Success
|
|
27577
|
+
</Button>
|
|
27578
|
+
<Button
|
|
27579
|
+
onclick={() =>
|
|
27580
|
+
tt.addToast({
|
|
27581
|
+
type: 'assertive',
|
|
27582
|
+
data: {
|
|
27583
|
+
title: 'Heads up',
|
|
27584
|
+
description: 'Token expires in 5 minutes.',
|
|
27585
|
+
variant: 'warning'
|
|
27586
|
+
}
|
|
27587
|
+
})}
|
|
27588
|
+
class="rounded border border-(--muted-gold) bg-(--muted-gold) px-4 py-2 text-sm text-(--ink)"
|
|
27589
|
+
>
|
|
27590
|
+
Warning
|
|
27591
|
+
</Button>
|
|
27592
|
+
<Button
|
|
27593
|
+
onclick={() =>
|
|
27594
|
+
tt.addToast({
|
|
27595
|
+
type: 'assertive',
|
|
27596
|
+
data: {
|
|
27597
|
+
title: 'Upload failed',
|
|
27598
|
+
description: 'Could not reach the server.',
|
|
27599
|
+
variant: 'error',
|
|
27600
|
+
action: {
|
|
27601
|
+
label: 'Retry',
|
|
27602
|
+
onClick: () => tt.addToast({ data: { title: 'Retrying\u2026', variant: 'info' } })
|
|
27537
27603
|
}
|
|
27538
|
-
}
|
|
27539
|
-
|
|
27540
|
-
|
|
27541
|
-
|
|
27542
|
-
|
|
27543
|
-
|
|
27544
|
-
|
|
27545
|
-
|
|
27546
|
-
|
|
27547
|
-
|
|
27548
|
-
|
|
27549
|
-
|
|
27604
|
+
}
|
|
27605
|
+
})}
|
|
27606
|
+
class="rounded border border-(--vermilion) bg-(--vermilion) px-4 py-2 text-sm text-white"
|
|
27607
|
+
>
|
|
27608
|
+
Error + action
|
|
27609
|
+
</Button>
|
|
27610
|
+
<Button
|
|
27611
|
+
onclick={() =>
|
|
27612
|
+
tt.addToast({
|
|
27613
|
+
closeDelay: 0,
|
|
27614
|
+
data: {
|
|
27615
|
+
title: 'Persistent',
|
|
27616
|
+
description: 'Stays until dismissed.',
|
|
27617
|
+
variant: 'info'
|
|
27618
|
+
}
|
|
27619
|
+
})}
|
|
27620
|
+
class="rounded border border-(--indigo-dye) px-4 py-2 text-sm text-(--indigo-dye)"
|
|
27621
|
+
>
|
|
27622
|
+
Persistent
|
|
27623
|
+
</Button>
|
|
27624
|
+
<Button
|
|
27625
|
+
onclick={() => tt.clear()}
|
|
27626
|
+
class="rounded border border-(--charcoal)/30 px-4 py-2 text-sm text-(--charcoal)"
|
|
27627
|
+
>
|
|
27628
|
+
Clear all
|
|
27629
|
+
</Button>
|
|
27630
|
+
</div>
|
|
27550
27631
|
|
|
27551
|
-
|
|
27552
|
-
|
|
27553
|
-
|
|
27554
|
-
|
|
27555
|
-
{/snippet}
|
|
27632
|
+
<p class="mt-4 font-mono text-sm text-(--charcoal)/60">
|
|
27633
|
+
Hover any toast to pause its timer. Switch tabs to pause all.
|
|
27634
|
+
</p>
|
|
27635
|
+
</section>
|
|
27556
27636
|
</Toaster>
|
|
27557
27637
|
|
|
27558
27638
|
<DemoFooter
|
|
@@ -27586,11 +27666,13 @@ sum(1, 2);\`;
|
|
|
27586
27666
|
`,
|
|
27587
27667
|
"demos/toggle-button/+page.svelte": `<script lang="ts">
|
|
27588
27668
|
import { CaretLeft, TextB, TextItalic, TextUnderline, Sun, Moon } from 'phosphor-svelte';
|
|
27669
|
+
import { resolve } from '$app/paths';
|
|
27589
27670
|
import { ToggleButton } from 'alus-ui';
|
|
27590
27671
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
27591
27672
|
|
|
27592
27673
|
const code = \`<script lang="ts">
|
|
27593
27674
|
import { ToggleButton } from 'alus-ui';
|
|
27675
|
+
import { resolve } from '$app/paths';
|
|
27594
27676
|
let bold = $state(false);
|
|
27595
27677
|
<\\/script>
|
|
27596
27678
|
|
|
@@ -27609,7 +27691,7 @@ sum(1, 2);\`;
|
|
|
27609
27691
|
</svelte:head>
|
|
27610
27692
|
|
|
27611
27693
|
<a
|
|
27612
|
-
href=
|
|
27694
|
+
href={resolve('/')}
|
|
27613
27695
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
27614
27696
|
>
|
|
27615
27697
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -27699,6 +27781,7 @@ sum(1, 2);\`;
|
|
|
27699
27781
|
import { CaretLeft, Info } from 'phosphor-svelte';
|
|
27700
27782
|
import { Tooltip, TooltipTrigger, TooltipContent } from 'alus-ui';
|
|
27701
27783
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
27784
|
+
import { resolve } from '$app/paths';
|
|
27702
27785
|
|
|
27703
27786
|
const code = \`<Tooltip>
|
|
27704
27787
|
<TooltipTrigger>Hover me</TooltipTrigger>
|
|
@@ -27711,7 +27794,7 @@ sum(1, 2);\`;
|
|
|
27711
27794
|
</svelte:head>
|
|
27712
27795
|
|
|
27713
27796
|
<a
|
|
27714
|
-
href=
|
|
27797
|
+
href={resolve('/')}
|
|
27715
27798
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
27716
27799
|
>
|
|
27717
27800
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -27787,6 +27870,7 @@ sum(1, 2);\`;
|
|
|
27787
27870
|
import { CaretLeft, CaretRight, Folder, FolderOpen, File } from 'phosphor-svelte';
|
|
27788
27871
|
import { TreeView, TreeItem } from 'alus-ui';
|
|
27789
27872
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
27873
|
+
import { resolve } from '$app/paths';
|
|
27790
27874
|
|
|
27791
27875
|
const code = \`<TreeView bind:selected aria-label="Project files">
|
|
27792
27876
|
<TreeItem id="src">
|
|
@@ -27805,7 +27889,7 @@ sum(1, 2);\`;
|
|
|
27805
27889
|
</svelte:head>
|
|
27806
27890
|
|
|
27807
27891
|
<a
|
|
27808
|
-
href=
|
|
27892
|
+
href={resolve('/')}
|
|
27809
27893
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
27810
27894
|
>
|
|
27811
27895
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -27963,6 +28047,7 @@ sum(1, 2);\`;
|
|
|
27963
28047
|
import { CaretLeft, Plus, Trash, Shuffle } from 'phosphor-svelte';
|
|
27964
28048
|
import { VirtualList } from 'alus-ui';
|
|
27965
28049
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
28050
|
+
import { resolve } from '$app/paths';
|
|
27966
28051
|
|
|
27967
28052
|
const code = \`<VirtualList items={rows} itemHeight={56} overscan={4} aria-label="Rows">
|
|
27968
28053
|
{#snippet item({ item, index })}
|
|
@@ -28016,7 +28101,7 @@ sum(1, 2);\`;
|
|
|
28016
28101
|
</svelte:head>
|
|
28017
28102
|
|
|
28018
28103
|
<a
|
|
28019
|
-
href=
|
|
28104
|
+
href={resolve('/')}
|
|
28020
28105
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
28021
28106
|
>
|
|
28022
28107
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -28176,6 +28261,7 @@ sum(1, 2);\`;
|
|
|
28176
28261
|
import { CaretLeft } from 'phosphor-svelte';
|
|
28177
28262
|
import { VisuallyHidden } from 'alus-ui';
|
|
28178
28263
|
import DemoFooter from '$components/DemoFooter.svelte';
|
|
28264
|
+
import { resolve } from '$app/paths';
|
|
28179
28265
|
|
|
28180
28266
|
const code = \`<button>
|
|
28181
28267
|
<span aria-hidden="true">\xD7</span>
|
|
@@ -28189,7 +28275,7 @@ sum(1, 2);\`;
|
|
|
28189
28275
|
</svelte:head>
|
|
28190
28276
|
|
|
28191
28277
|
<a
|
|
28192
|
-
href=
|
|
28278
|
+
href={resolve('/')}
|
|
28193
28279
|
class="mb-8 inline-flex items-center gap-2 text-(--indigo-dye) transition-colors duration-300 hover:text-(--vermilion)"
|
|
28194
28280
|
>
|
|
28195
28281
|
<CaretLeft class="h-5 w-5" />
|
|
@@ -28260,7 +28346,7 @@ sum(1, 2);\`;
|
|
|
28260
28346
|
</main>
|
|
28261
28347
|
`
|
|
28262
28348
|
},
|
|
28263
|
-
generated_at: "2026-05-
|
|
28349
|
+
generated_at: "2026-05-31T14:52:05.218Z"
|
|
28264
28350
|
};
|
|
28265
28351
|
|
|
28266
28352
|
// ../mcp-server/src/lib/fs.ts
|
|
@@ -28327,9 +28413,7 @@ function truncate(text, hint) {
|
|
|
28327
28413
|
|
|
28328
28414
|
// ../mcp-server/src/mcp/handlers/tools/list-components.ts
|
|
28329
28415
|
var schema = object({
|
|
28330
|
-
category: optional(
|
|
28331
|
-
picklist(CATEGORIES, "Must be one of the alus-ui component categories")
|
|
28332
|
-
),
|
|
28416
|
+
category: optional(picklist(CATEGORIES, "Must be one of the alus-ui component categories")),
|
|
28333
28417
|
response_format: optional(picklist(["markdown", "json"]), "markdown")
|
|
28334
28418
|
});
|
|
28335
28419
|
async function list_components_handler(params) {
|
|
@@ -28398,9 +28482,7 @@ function get_component(server2) {
|
|
|
28398
28482
|
try {
|
|
28399
28483
|
const all = await list_all_components();
|
|
28400
28484
|
const needle = name.toLowerCase().replace(/[-_\s]/g, "");
|
|
28401
|
-
let matches = all.filter(
|
|
28402
|
-
(c) => c.name.toLowerCase().replace(/[-_\s]/g, "") === needle
|
|
28403
|
-
);
|
|
28485
|
+
let matches = all.filter((c) => c.name.toLowerCase().replace(/[-_\s]/g, "") === needle);
|
|
28404
28486
|
if (category) matches = matches.filter((c) => c.category === category);
|
|
28405
28487
|
if (!matches.length) {
|
|
28406
28488
|
const similar = all.filter(
|
|
@@ -28490,7 +28572,9 @@ function search_components(server2) {
|
|
|
28490
28572
|
""
|
|
28491
28573
|
);
|
|
28492
28574
|
}
|
|
28493
|
-
return tool.text(
|
|
28575
|
+
return tool.text(
|
|
28576
|
+
truncate(lines.join("\n"), "Narrow with category or a more specific query.")
|
|
28577
|
+
);
|
|
28494
28578
|
} catch (e) {
|
|
28495
28579
|
return tool.error(e.message);
|
|
28496
28580
|
}
|
|
@@ -28503,7 +28587,9 @@ import { readFile as readFile3, readdir as readdir2 } from "fs/promises";
|
|
|
28503
28587
|
var schema4 = object({
|
|
28504
28588
|
name: pipe(
|
|
28505
28589
|
string(),
|
|
28506
|
-
description(
|
|
28590
|
+
description(
|
|
28591
|
+
"Component route folder name, lowercase hyphenated (e.g. 'button', 'date-picker')"
|
|
28592
|
+
)
|
|
28507
28593
|
)
|
|
28508
28594
|
});
|
|
28509
28595
|
function get_component_demo(server2) {
|
|
@@ -28578,7 +28664,10 @@ ${content}
|
|
|
28578
28664
|
import { readFile as readFile5 } from "fs/promises";
|
|
28579
28665
|
var MODULES = ["aria", "focus", "id", "keyboard", "index", "form/state"];
|
|
28580
28666
|
var schema5 = object({
|
|
28581
|
-
module: picklist(
|
|
28667
|
+
module: picklist(
|
|
28668
|
+
MODULES,
|
|
28669
|
+
"Utility module \u2014 one of: aria, focus, id, keyboard, index, form/state"
|
|
28670
|
+
)
|
|
28582
28671
|
});
|
|
28583
28672
|
function get_utils(server2) {
|
|
28584
28673
|
server2.tool(
|