@nqmcreative/ui 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +151 -439
- package/cli/index.mjs +67 -30
- package/dist/core/calendar.d.ts +3 -0
- package/dist/core/calendar.js +36 -0
- package/dist/core/dialog.svelte.d.ts +14 -0
- package/dist/core/dialog.svelte.js +23 -0
- package/dist/core/files.d.ts +35 -0
- package/dist/core/files.js +62 -0
- package/dist/core/index.d.ts +37 -0
- package/dist/core/index.js +35 -0
- package/dist/core/list.svelte.d.ts +41 -0
- package/dist/core/list.svelte.js +77 -0
- package/dist/core/number.d.ts +7 -0
- package/dist/core/number.js +17 -0
- package/dist/core/pagination.d.ts +6 -0
- package/dist/core/pagination.js +21 -0
- package/dist/core/password.d.ts +8 -0
- package/dist/core/password.js +23 -0
- package/dist/core/table.d.ts +22 -0
- package/dist/core/table.js +41 -0
- package/dist/core/theme.svelte.d.ts +16 -0
- package/dist/core/theme.svelte.js +34 -0
- package/dist/core/trigger.d.ts +35 -0
- package/dist/core/trigger.js +77 -0
- package/dist/index.d.ts +11 -103
- package/dist/index.js +11 -75
- package/dist/{components → styles/matte}/AccordionItem.svelte +1 -1
- package/dist/{components → styles/matte}/AccordionItem.svelte.d.ts +1 -1
- package/dist/{components → styles/matte}/Alert.svelte +8 -2
- package/dist/{components → styles/matte}/Alert.svelte.d.ts +1 -1
- package/dist/{components → styles/matte}/Avatar.svelte +1 -1
- package/dist/{components → styles/matte}/Avatar.svelte.d.ts +1 -1
- package/dist/{components → styles/matte}/Badge.svelte +8 -3
- package/dist/{components → styles/matte}/Badge.svelte.d.ts +1 -3
- package/dist/{components → styles/matte}/Breadcrumb.svelte +2 -2
- package/dist/{components → styles/matte}/Breadcrumb.svelte.d.ts +1 -1
- package/dist/{components → styles/matte}/Button.svelte +1 -1
- package/dist/{components → styles/matte}/Button.svelte.d.ts +1 -1
- package/dist/styles/matte/CTASection.svelte +76 -0
- package/dist/styles/matte/CTASection.svelte.d.ts +18 -0
- package/dist/{components → styles/matte}/Calendar.svelte +7 -17
- package/dist/{components → styles/matte}/Calendar.svelte.d.ts +1 -1
- package/dist/{components → styles/matte}/Card.svelte +1 -1
- package/dist/{components → styles/matte}/Card.svelte.d.ts +1 -1
- package/dist/{components → styles/matte}/Checkbox.svelte +1 -1
- package/dist/{components → styles/matte}/Checkbox.svelte.d.ts +1 -1
- package/dist/{components → styles/matte}/CheckboxGroup.svelte +1 -1
- package/dist/{components → styles/matte}/CheckboxGroup.svelte.d.ts +1 -1
- package/dist/{components → styles/matte}/Combobox.svelte +31 -42
- package/dist/{components → styles/matte}/Combobox.svelte.d.ts +1 -1
- package/dist/{components → styles/matte}/CommandPalette.svelte +26 -41
- package/dist/{components → styles/matte}/CommandPalette.svelte.d.ts +1 -1
- package/dist/{components → styles/matte}/ConfirmDialog.svelte +2 -2
- package/dist/{components → styles/matte}/ConfirmDialog.svelte.d.ts +2 -2
- package/dist/{components → styles/matte}/ContextMenu.svelte +5 -7
- package/dist/{components → styles/matte}/DatePicker.svelte +7 -11
- package/dist/{components → styles/matte}/DatePicker.svelte.d.ts +1 -1
- package/dist/{components → styles/matte}/Drawer.svelte +4 -7
- package/dist/{components → styles/matte}/Dropdown.svelte +18 -36
- package/dist/{components → styles/matte}/Dropdown.svelte.d.ts +1 -1
- package/dist/{components → styles/matte}/Dropzone.svelte +11 -43
- package/dist/{components → styles/matte}/Dropzone.svelte.d.ts +2 -5
- package/dist/{components → styles/matte}/EmptyState.svelte +1 -1
- package/dist/{components → styles/matte}/EmptyState.svelte.d.ts +1 -1
- package/dist/styles/matte/FeatureCard.svelte +58 -0
- package/dist/styles/matte/FeatureCard.svelte.d.ts +16 -0
- package/dist/styles/matte/FeatureGrid.svelte +62 -0
- package/dist/styles/matte/FeatureGrid.svelte.d.ts +16 -0
- package/dist/{components → styles/matte}/Footer.svelte +1 -1
- package/dist/{components → styles/matte}/Footer.svelte.d.ts +1 -1
- package/dist/styles/matte/HeroSection.svelte +80 -0
- package/dist/styles/matte/HeroSection.svelte.d.ts +21 -0
- package/dist/{components → styles/matte}/Input.svelte +1 -1
- package/dist/{components → styles/matte}/Input.svelte.d.ts +1 -1
- package/dist/{components → styles/matte}/Link.svelte +1 -1
- package/dist/{components → styles/matte}/Link.svelte.d.ts +1 -1
- package/dist/{components → styles/matte}/LocaleProvider.svelte +1 -1
- package/dist/{components → styles/matte}/LocaleProvider.svelte.d.ts +1 -1
- package/dist/styles/matte/LogoCloud.svelte +61 -0
- package/dist/styles/matte/LogoCloud.svelte.d.ts +19 -0
- package/dist/{components → styles/matte}/MenuItem.svelte +1 -1
- package/dist/{components → styles/matte}/MenuItem.svelte.d.ts +1 -1
- package/dist/{components → styles/matte}/Modal.svelte +4 -7
- package/dist/{components → styles/matte}/MultiSelect.svelte +18 -37
- package/dist/{components → styles/matte}/MultiSelect.svelte.d.ts +1 -1
- package/dist/{components → styles/matte}/Navbar.svelte +2 -2
- package/dist/{components → styles/matte}/Navbar.svelte.d.ts +1 -1
- package/dist/{components → styles/matte}/NumberInput.svelte +4 -8
- package/dist/{components → styles/matte}/NumberInput.svelte.d.ts +1 -1
- package/dist/{components → styles/matte}/Pagination.svelte +4 -15
- package/dist/{components → styles/matte}/Pagination.svelte.d.ts +1 -1
- package/dist/{components → styles/matte}/PasswordInput.svelte +4 -13
- package/dist/{components → styles/matte}/PasswordInput.svelte.d.ts +1 -1
- package/dist/{components → styles/matte}/Popover.svelte +16 -41
- package/dist/{components → styles/matte}/Popover.svelte.d.ts +1 -1
- package/dist/styles/matte/PricingCard.svelte +107 -0
- package/dist/styles/matte/PricingCard.svelte.d.ts +25 -0
- package/dist/{components → styles/matte}/Progress.svelte +3 -2
- package/dist/{components → styles/matte}/Progress.svelte.d.ts +1 -1
- package/dist/{components → styles/matte}/Radio.svelte +1 -1
- package/dist/{components → styles/matte}/Radio.svelte.d.ts +1 -1
- package/dist/{components → styles/matte}/RadioGroup.svelte +1 -1
- package/dist/{components → styles/matte}/RadioGroup.svelte.d.ts +1 -1
- package/dist/{components → styles/matte}/SegmentedControl.svelte +1 -1
- package/dist/{components → styles/matte}/SegmentedControl.svelte.d.ts +1 -1
- package/dist/{components → styles/matte}/Select.svelte +1 -1
- package/dist/{components → styles/matte}/Select.svelte.d.ts +1 -1
- package/dist/{components → styles/matte}/Sidebar.svelte +2 -2
- package/dist/{components → styles/matte}/Sidebar.svelte.d.ts +1 -1
- package/dist/{components → styles/matte}/Slider.svelte +3 -2
- package/dist/{components → styles/matte}/Slider.svelte.d.ts +1 -1
- package/dist/{components → styles/matte}/Spinner.svelte +2 -2
- package/dist/{components → styles/matte}/Spinner.svelte.d.ts +1 -1
- package/dist/{components → styles/matte}/Stat.svelte +1 -1
- package/dist/{components → styles/matte}/Stat.svelte.d.ts +1 -1
- package/dist/styles/matte/StatsBand.svelte +57 -0
- package/dist/styles/matte/StatsBand.svelte.d.ts +20 -0
- package/dist/{components → styles/matte}/Steps.svelte +1 -1
- package/dist/{components → styles/matte}/Steps.svelte.d.ts +1 -1
- package/dist/{components → styles/matte}/Switch.svelte +1 -1
- package/dist/{components → styles/matte}/Switch.svelte.d.ts +1 -1
- package/dist/{components → styles/matte}/Table.svelte +6 -28
- package/dist/{components → styles/matte}/Table.svelte.d.ts +2 -6
- package/dist/{components → styles/matte}/Tabs.svelte +8 -1
- package/dist/{components → styles/matte}/Tabs.svelte.d.ts +1 -1
- package/dist/styles/matte/Testimonial.svelte +67 -0
- package/dist/styles/matte/Testimonial.svelte.d.ts +19 -0
- package/dist/{components → styles/matte}/Textarea.svelte +1 -1
- package/dist/{components → styles/matte}/Textarea.svelte.d.ts +1 -1
- package/dist/{components → styles/matte}/ThemeToggle.svelte +14 -27
- package/dist/{components → styles/matte}/ThemeToggle.svelte.d.ts +2 -6
- package/dist/{components → styles/matte}/Toaster.svelte +4 -4
- package/dist/{fonts.css → styles/matte/fonts.css} +4 -3
- package/dist/styles/matte/index.d.ts +109 -0
- package/dist/styles/matte/index.js +83 -0
- package/dist/{theme.css → styles/matte/theme.css} +0 -1
- package/dist/styles/paper/Accordion.svelte +17 -0
- package/dist/styles/paper/Accordion.svelte.d.ts +8 -0
- package/dist/styles/paper/AccordionItem.svelte +46 -0
- package/dist/styles/paper/AccordionItem.svelte.d.ts +14 -0
- package/dist/styles/paper/Alert.svelte +99 -0
- package/dist/styles/paper/Alert.svelte.d.ts +18 -0
- package/dist/styles/paper/Avatar.svelte +60 -0
- package/dist/styles/paper/Avatar.svelte.d.ts +16 -0
- package/dist/styles/paper/AvatarGroup.svelte +17 -0
- package/dist/styles/paper/AvatarGroup.svelte.d.ts +8 -0
- package/dist/styles/paper/Badge.svelte +58 -0
- package/dist/styles/paper/Badge.svelte.d.ts +16 -0
- package/dist/styles/paper/Breadcrumb.svelte +49 -0
- package/dist/styles/paper/Breadcrumb.svelte.d.ts +14 -0
- package/dist/styles/paper/Button.svelte +96 -0
- package/dist/styles/paper/Button.svelte.d.ts +21 -0
- package/dist/styles/paper/CTASection.svelte +76 -0
- package/dist/styles/paper/CTASection.svelte.d.ts +18 -0
- package/dist/styles/paper/Calendar.svelte +202 -0
- package/dist/styles/paper/Calendar.svelte.d.ts +22 -0
- package/dist/styles/paper/Card.svelte +78 -0
- package/dist/styles/paper/Card.svelte.d.ts +21 -0
- package/dist/styles/paper/Checkbox.svelte +75 -0
- package/dist/styles/paper/Checkbox.svelte.d.ts +15 -0
- package/dist/styles/paper/CheckboxGroup.svelte +111 -0
- package/dist/styles/paper/CheckboxGroup.svelte.d.ts +30 -0
- package/dist/styles/paper/Combobox.svelte +266 -0
- package/dist/styles/paper/Combobox.svelte.d.ts +29 -0
- package/dist/styles/paper/CommandPalette.svelte +209 -0
- package/dist/styles/paper/CommandPalette.svelte.d.ts +32 -0
- package/dist/styles/paper/ConfirmDialog.svelte +97 -0
- package/dist/styles/paper/ConfirmDialog.svelte.d.ts +22 -0
- package/dist/styles/paper/ContextMenu.svelte +88 -0
- package/dist/styles/paper/ContextMenu.svelte.d.ts +15 -0
- package/dist/styles/paper/DatePicker.svelte +192 -0
- package/dist/styles/paper/DatePicker.svelte.d.ts +23 -0
- package/dist/styles/paper/Divider.svelte +30 -0
- package/dist/styles/paper/Divider.svelte.d.ts +10 -0
- package/dist/styles/paper/Drawer.svelte +165 -0
- package/dist/styles/paper/Drawer.svelte.d.ts +20 -0
- package/dist/styles/paper/Dropdown.svelte +94 -0
- package/dist/styles/paper/Dropdown.svelte.d.ts +23 -0
- package/dist/styles/paper/Dropzone.svelte +210 -0
- package/dist/styles/paper/Dropzone.svelte.d.ts +29 -0
- package/dist/styles/paper/EmptyState.svelte +71 -0
- package/dist/styles/paper/EmptyState.svelte.d.ts +18 -0
- package/dist/styles/paper/FeatureCard.svelte +58 -0
- package/dist/styles/paper/FeatureCard.svelte.d.ts +16 -0
- package/dist/styles/paper/FeatureGrid.svelte +62 -0
- package/dist/styles/paper/FeatureGrid.svelte.d.ts +16 -0
- package/dist/styles/paper/Field.svelte +42 -0
- package/dist/styles/paper/Field.svelte.d.ts +16 -0
- package/dist/styles/paper/Footer.svelte +91 -0
- package/dist/styles/paper/Footer.svelte.d.ts +25 -0
- package/dist/styles/paper/HeroSection.svelte +86 -0
- package/dist/styles/paper/HeroSection.svelte.d.ts +21 -0
- package/dist/styles/paper/Input.svelte +60 -0
- package/dist/styles/paper/Input.svelte.d.ts +18 -0
- package/dist/styles/paper/InputGroup.svelte +20 -0
- package/dist/styles/paper/InputGroup.svelte.d.ts +11 -0
- package/dist/styles/paper/Kbd.svelte +17 -0
- package/dist/styles/paper/Kbd.svelte.d.ts +8 -0
- package/dist/styles/paper/Label.svelte +16 -0
- package/dist/styles/paper/Label.svelte.d.ts +9 -0
- package/dist/styles/paper/Link.svelte +44 -0
- package/dist/styles/paper/Link.svelte.d.ts +16 -0
- package/dist/styles/paper/LocaleProvider.svelte +24 -0
- package/dist/styles/paper/LocaleProvider.svelte.d.ts +10 -0
- package/dist/styles/paper/LogoCloud.svelte +61 -0
- package/dist/styles/paper/LogoCloud.svelte.d.ts +19 -0
- package/dist/styles/paper/MenuItem.svelte +64 -0
- package/dist/styles/paper/MenuItem.svelte.d.ts +18 -0
- package/dist/styles/paper/MenuSeparator.svelte +22 -0
- package/dist/styles/paper/MenuSeparator.svelte.d.ts +8 -0
- package/dist/styles/paper/Modal.svelte +118 -0
- package/dist/styles/paper/Modal.svelte.d.ts +21 -0
- package/dist/styles/paper/MultiSelect.svelte +287 -0
- package/dist/styles/paper/MultiSelect.svelte.d.ts +31 -0
- package/dist/styles/paper/Navbar.svelte +201 -0
- package/dist/styles/paper/Navbar.svelte.d.ts +33 -0
- package/dist/styles/paper/NumberInput.svelte +96 -0
- package/dist/styles/paper/NumberInput.svelte.d.ts +15 -0
- package/dist/styles/paper/Pagination.svelte +83 -0
- package/dist/styles/paper/Pagination.svelte.d.ts +15 -0
- package/dist/styles/paper/PasswordInput.svelte +100 -0
- package/dist/styles/paper/PasswordInput.svelte.d.ts +12 -0
- package/dist/styles/paper/Popover.svelte +89 -0
- package/dist/styles/paper/Popover.svelte.d.ts +19 -0
- package/dist/styles/paper/PricingCard.svelte +108 -0
- package/dist/styles/paper/PricingCard.svelte.d.ts +25 -0
- package/dist/styles/paper/Progress.svelte +59 -0
- package/dist/styles/paper/Progress.svelte.d.ts +17 -0
- package/dist/styles/paper/Radio.svelte +55 -0
- package/dist/styles/paper/Radio.svelte.d.ts +15 -0
- package/dist/styles/paper/RadioGroup.svelte +95 -0
- package/dist/styles/paper/RadioGroup.svelte.d.ts +27 -0
- package/dist/styles/paper/SegmentedControl.svelte +88 -0
- package/dist/styles/paper/SegmentedControl.svelte.d.ts +25 -0
- package/dist/styles/paper/Select.svelte +61 -0
- package/dist/styles/paper/Select.svelte.d.ts +20 -0
- package/dist/styles/paper/Sidebar.svelte +206 -0
- package/dist/styles/paper/Sidebar.svelte.d.ts +36 -0
- package/dist/styles/paper/Skeleton.svelte +46 -0
- package/dist/styles/paper/Skeleton.svelte.d.ts +13 -0
- package/dist/styles/paper/Slider.svelte +80 -0
- package/dist/styles/paper/Slider.svelte.d.ts +19 -0
- package/dist/styles/paper/Spinner.svelte +34 -0
- package/dist/styles/paper/Spinner.svelte.d.ts +13 -0
- package/dist/styles/paper/Stat.svelte +51 -0
- package/dist/styles/paper/Stat.svelte.d.ts +16 -0
- package/dist/styles/paper/StatsBand.svelte +63 -0
- package/dist/styles/paper/StatsBand.svelte.d.ts +20 -0
- package/dist/styles/paper/Steps.svelte +141 -0
- package/dist/styles/paper/Steps.svelte.d.ts +24 -0
- package/dist/styles/paper/Switch.svelte +64 -0
- package/dist/styles/paper/Switch.svelte.d.ts +14 -0
- package/dist/styles/paper/Table.svelte +217 -0
- package/dist/styles/paper/Table.svelte.d.ts +66 -0
- package/dist/styles/paper/Tabs.svelte +102 -0
- package/dist/styles/paper/Tabs.svelte.d.ts +23 -0
- package/dist/styles/paper/Testimonial.svelte +64 -0
- package/dist/styles/paper/Testimonial.svelte.d.ts +19 -0
- package/dist/styles/paper/Textarea.svelte +54 -0
- package/dist/styles/paper/Textarea.svelte.d.ts +12 -0
- package/dist/styles/paper/ThemeToggle.svelte +130 -0
- package/dist/styles/paper/ThemeToggle.svelte.d.ts +16 -0
- package/dist/styles/paper/Toaster.svelte +132 -0
- package/dist/styles/paper/Toaster.svelte.d.ts +8 -0
- package/dist/styles/paper/Tooltip.svelte +33 -0
- package/dist/styles/paper/Tooltip.svelte.d.ts +12 -0
- package/dist/styles/paper/fonts.css +46 -0
- package/dist/styles/paper/index.d.ts +109 -0
- package/dist/styles/paper/index.js +83 -0
- package/dist/styles/paper/theme.css +222 -0
- package/package.json +531 -201
- package/registry.json +658 -339
- /package/dist/{actions → core/actions}/anchor.d.ts +0 -0
- /package/dist/{actions → core/actions}/anchor.js +0 -0
- /package/dist/{actions → core/actions}/dismissable.d.ts +0 -0
- /package/dist/{actions → core/actions}/dismissable.js +0 -0
- /package/dist/{date.d.ts → core/date.d.ts} +0 -0
- /package/dist/{date.js → core/date.js} +0 -0
- /package/dist/{locale.svelte.d.ts → core/locale.svelte.d.ts} +0 -0
- /package/dist/{locale.svelte.js → core/locale.svelte.js} +0 -0
- /package/dist/{toast.svelte.d.ts → core/toast.svelte.d.ts} +0 -0
- /package/dist/{toast.svelte.js → core/toast.svelte.js} +0 -0
- /package/dist/{tones.d.ts → core/tones.d.ts} +0 -0
- /package/dist/{tones.js → core/tones.js} +0 -0
- /package/dist/{components → styles/matte}/Accordion.svelte +0 -0
- /package/dist/{components → styles/matte}/Accordion.svelte.d.ts +0 -0
- /package/dist/{components → styles/matte}/AvatarGroup.svelte +0 -0
- /package/dist/{components → styles/matte}/AvatarGroup.svelte.d.ts +0 -0
- /package/dist/{components → styles/matte}/ContextMenu.svelte.d.ts +0 -0
- /package/dist/{components → styles/matte}/Divider.svelte +0 -0
- /package/dist/{components → styles/matte}/Divider.svelte.d.ts +0 -0
- /package/dist/{components → styles/matte}/Drawer.svelte.d.ts +0 -0
- /package/dist/{components → styles/matte}/Field.svelte +0 -0
- /package/dist/{components → styles/matte}/Field.svelte.d.ts +0 -0
- /package/dist/{components → styles/matte}/InputGroup.svelte +0 -0
- /package/dist/{components → styles/matte}/InputGroup.svelte.d.ts +0 -0
- /package/dist/{components → styles/matte}/Kbd.svelte +0 -0
- /package/dist/{components → styles/matte}/Kbd.svelte.d.ts +0 -0
- /package/dist/{components → styles/matte}/Label.svelte +0 -0
- /package/dist/{components → styles/matte}/Label.svelte.d.ts +0 -0
- /package/dist/{components → styles/matte}/MenuSeparator.svelte +0 -0
- /package/dist/{components → styles/matte}/MenuSeparator.svelte.d.ts +0 -0
- /package/dist/{components → styles/matte}/Modal.svelte.d.ts +0 -0
- /package/dist/{components → styles/matte}/Skeleton.svelte +0 -0
- /package/dist/{components → styles/matte}/Skeleton.svelte.d.ts +0 -0
- /package/dist/{components → styles/matte}/Toaster.svelte.d.ts +0 -0
- /package/dist/{components → styles/matte}/Tooltip.svelte +0 -0
- /package/dist/{components → styles/matte}/Tooltip.svelte.d.ts +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { HTMLAttributes } from 'svelte/elements';
|
|
2
|
-
import { type Tone } from '
|
|
2
|
+
import { type Tone } from '../../core/tones.js';
|
|
3
3
|
export type StatTrend = 'up' | 'down' | 'flat';
|
|
4
4
|
interface Props extends HTMLAttributes<HTMLDivElement> {
|
|
5
5
|
label: string;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
3
|
+
import Stat from './Stat.svelte';
|
|
4
|
+
import type { StatTrend } from './Stat.svelte';
|
|
5
|
+
import type { Tone } from '../../core/tones.js';
|
|
6
|
+
|
|
7
|
+
export interface BandStat {
|
|
8
|
+
label: string;
|
|
9
|
+
value: string | number;
|
|
10
|
+
delta?: string;
|
|
11
|
+
trend?: StatTrend;
|
|
12
|
+
hint?: string;
|
|
13
|
+
tone?: Tone;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
interface Props extends HTMLAttributes<HTMLElement> {
|
|
17
|
+
stats: BandStat[];
|
|
18
|
+
title?: string;
|
|
19
|
+
/** Hairline grid rather than free-standing figures. */
|
|
20
|
+
bordered?: boolean;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
let { stats, title, bordered = true, class: className = '', ...rest }: Props = $props();
|
|
24
|
+
|
|
25
|
+
const cols = $derived(
|
|
26
|
+
stats.length === 2
|
|
27
|
+
? 'sm:grid-cols-2'
|
|
28
|
+
: stats.length === 4
|
|
29
|
+
? 'sm:grid-cols-2 lg:grid-cols-4'
|
|
30
|
+
: 'sm:grid-cols-3'
|
|
31
|
+
);
|
|
32
|
+
</script>
|
|
33
|
+
|
|
34
|
+
<section class="w-full px-6 py-16 {className}" {...rest}>
|
|
35
|
+
<div class="mx-auto flex w-full max-w-6xl flex-col gap-8">
|
|
36
|
+
{#if title}
|
|
37
|
+
<h2 class="max-w-xl font-heading text-3xl font-medium tracking-tight text-balance text-text">
|
|
38
|
+
{title}
|
|
39
|
+
</h2>
|
|
40
|
+
{/if}
|
|
41
|
+
|
|
42
|
+
<div class="grid {cols} {bordered ? 'gap-px border border-hairline bg-hairline' : 'gap-10'}">
|
|
43
|
+
{#each stats as stat (stat.label)}
|
|
44
|
+
<div class={bordered ? 'bg-bg p-6' : ''}>
|
|
45
|
+
<Stat
|
|
46
|
+
label={stat.label}
|
|
47
|
+
value={stat.value}
|
|
48
|
+
delta={stat.delta}
|
|
49
|
+
trend={stat.trend}
|
|
50
|
+
hint={stat.hint}
|
|
51
|
+
tone={stat.tone}
|
|
52
|
+
/>
|
|
53
|
+
</div>
|
|
54
|
+
{/each}
|
|
55
|
+
</div>
|
|
56
|
+
</div>
|
|
57
|
+
</section>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
2
|
+
import type { StatTrend } from './Stat.svelte';
|
|
3
|
+
import type { Tone } from '../../core/tones.js';
|
|
4
|
+
export interface BandStat {
|
|
5
|
+
label: string;
|
|
6
|
+
value: string | number;
|
|
7
|
+
delta?: string;
|
|
8
|
+
trend?: StatTrend;
|
|
9
|
+
hint?: string;
|
|
10
|
+
tone?: Tone;
|
|
11
|
+
}
|
|
12
|
+
interface Props extends HTMLAttributes<HTMLElement> {
|
|
13
|
+
stats: BandStat[];
|
|
14
|
+
title?: string;
|
|
15
|
+
/** Hairline grid rather than free-standing figures. */
|
|
16
|
+
bordered?: boolean;
|
|
17
|
+
}
|
|
18
|
+
declare const StatsBand: import("svelte").Component<Props, {}, "">;
|
|
19
|
+
type StatsBand = ReturnType<typeof StatsBand>;
|
|
20
|
+
export default StatsBand;
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
<script lang="ts">
|
|
12
12
|
import type { HTMLAttributes } from 'svelte/elements';
|
|
13
|
-
import { focusRing, toneFill, toneRing, toneText, type Tone } from '
|
|
13
|
+
import { focusRing, toneFill, toneRing, toneText, type Tone } from '../../core/tones.js';
|
|
14
14
|
|
|
15
15
|
interface Props extends Omit<HTMLAttributes<HTMLElement>, 'onchange'> {
|
|
16
16
|
items: StepItem[];
|
|
@@ -6,7 +6,7 @@ export interface StepItem {
|
|
|
6
6
|
disabled?: boolean;
|
|
7
7
|
}
|
|
8
8
|
import type { HTMLAttributes } from 'svelte/elements';
|
|
9
|
-
import { type Tone } from '
|
|
9
|
+
import { type Tone } from '../../core/tones.js';
|
|
10
10
|
interface Props extends Omit<HTMLAttributes<HTMLElement>, 'onchange'> {
|
|
11
11
|
items: StepItem[];
|
|
12
12
|
/** Bindable, zero-based. Steps before it count as done. */
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import type { HTMLButtonAttributes } from 'svelte/elements';
|
|
3
|
-
import { focusRing, toneFill, toneRing, type Tone } from '
|
|
3
|
+
import { focusRing, toneFill, toneRing, type Tone } from '../../core/tones.js';
|
|
4
4
|
|
|
5
5
|
export type SwitchSize = 'sm' | 'md';
|
|
6
6
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { HTMLButtonAttributes } from 'svelte/elements';
|
|
2
|
-
import { type Tone } from '
|
|
2
|
+
import { type Tone } from '../../core/tones.js';
|
|
3
3
|
export type SwitchSize = 'sm' | 'md';
|
|
4
4
|
interface Props extends Omit<HTMLButtonAttributes, 'onclick' | 'onchange'> {
|
|
5
5
|
checked?: boolean;
|
|
@@ -8,21 +8,15 @@
|
|
|
8
8
|
/** Allow clicking the header to sort by this column. */
|
|
9
9
|
sortable?: boolean;
|
|
10
10
|
}
|
|
11
|
-
|
|
12
|
-
export type SortDirection = 'asc' | 'desc';
|
|
13
|
-
|
|
14
|
-
export interface TableSort {
|
|
15
|
-
key: string;
|
|
16
|
-
direction: SortDirection;
|
|
17
|
-
}
|
|
18
11
|
</script>
|
|
19
12
|
|
|
20
13
|
<script lang="ts" generics="T extends Record<string, unknown>">
|
|
21
14
|
import type { Snippet } from 'svelte';
|
|
22
15
|
import type { HTMLAttributes } from 'svelte/elements';
|
|
23
16
|
import Checkbox from './Checkbox.svelte';
|
|
24
|
-
import type { Tone } from '
|
|
25
|
-
import {
|
|
17
|
+
import type { Tone } from '../../core/tones.js';
|
|
18
|
+
import { nextSort, sortRows, toggleKey, type TableSort } from '../../core/table.js';
|
|
19
|
+
import { useLocale } from '../../core/locale.svelte.js';
|
|
26
20
|
|
|
27
21
|
interface Props extends Omit<HTMLAttributes<HTMLDivElement>, 'onselect'> {
|
|
28
22
|
columns: TableColumn[];
|
|
@@ -85,26 +79,11 @@
|
|
|
85
79
|
|
|
86
80
|
const pad = $derived(compact ? 'px-4 py-2' : 'px-4 py-3');
|
|
87
81
|
|
|
88
|
-
const sorted = $derived
|
|
89
|
-
if (!sort || !sortLocally) return rows;
|
|
90
|
-
const { key, direction } = sort;
|
|
91
|
-
const factor = direction === 'asc' ? 1 : -1;
|
|
92
|
-
return [...rows].sort((a, b) => {
|
|
93
|
-
const x = a[key];
|
|
94
|
-
const y = b[key];
|
|
95
|
-
if (x == null) return 1;
|
|
96
|
-
if (y == null) return -1;
|
|
97
|
-
if (typeof x === 'number' && typeof y === 'number') return (x - y) * factor;
|
|
98
|
-
return String(x).localeCompare(String(y), undefined, { numeric: true }) * factor;
|
|
99
|
-
});
|
|
100
|
-
});
|
|
82
|
+
const sorted = $derived(sortLocally ? sortRows(rows, sort) : rows);
|
|
101
83
|
|
|
102
84
|
function toggleSort(column: TableColumn) {
|
|
103
85
|
if (!column.sortable) return;
|
|
104
|
-
|
|
105
|
-
if (sort?.key !== column.key) next = { key: column.key, direction: 'asc' };
|
|
106
|
-
else if (sort.direction === 'asc') next = { key: column.key, direction: 'desc' };
|
|
107
|
-
else next = null;
|
|
86
|
+
const next = nextSort(sort, column.key);
|
|
108
87
|
sort = next;
|
|
109
88
|
onsort?.(next);
|
|
110
89
|
}
|
|
@@ -124,8 +103,7 @@
|
|
|
124
103
|
}
|
|
125
104
|
|
|
126
105
|
function toggleRow(row: T) {
|
|
127
|
-
|
|
128
|
-
selected = selected.includes(key) ? selected.filter((k) => k !== key) : [...selected, key];
|
|
106
|
+
selected = toggleKey(selected, keyOf(row));
|
|
129
107
|
onselect?.(selected);
|
|
130
108
|
}
|
|
131
109
|
</script>
|
|
@@ -7,14 +7,10 @@ export interface TableColumn {
|
|
|
7
7
|
/** Allow clicking the header to sort by this column. */
|
|
8
8
|
sortable?: boolean;
|
|
9
9
|
}
|
|
10
|
-
export type SortDirection = 'asc' | 'desc';
|
|
11
|
-
export interface TableSort {
|
|
12
|
-
key: string;
|
|
13
|
-
direction: SortDirection;
|
|
14
|
-
}
|
|
15
10
|
import type { Snippet } from 'svelte';
|
|
16
11
|
import type { HTMLAttributes } from 'svelte/elements';
|
|
17
|
-
import type { Tone } from '
|
|
12
|
+
import type { Tone } from '../../core/tones.js';
|
|
13
|
+
import { type TableSort } from '../../core/table.js';
|
|
18
14
|
declare function $$render<T extends Record<string, unknown>>(): {
|
|
19
15
|
props: Omit<HTMLAttributes<HTMLDivElement>, "onselect"> & {
|
|
20
16
|
columns: TableColumn[];
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import type { HTMLAttributes } from 'svelte/elements';
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
focusRing,
|
|
5
|
+
toneBorder,
|
|
6
|
+
toneRing,
|
|
7
|
+
toneSoft,
|
|
8
|
+
toneText,
|
|
9
|
+
type Tone
|
|
10
|
+
} from '../../core/tones.js';
|
|
4
11
|
|
|
5
12
|
export interface TabItem {
|
|
6
13
|
value: string;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
4
|
+
import Avatar from './Avatar.svelte';
|
|
5
|
+
import { toneBorderLeft, toneSurface, toneText, type Tone } from '../../core/tones.js';
|
|
6
|
+
|
|
7
|
+
export type TestimonialVariant = 'plain' | 'card' | 'accent';
|
|
8
|
+
|
|
9
|
+
interface Props extends HTMLAttributes<HTMLElement> {
|
|
10
|
+
quote: string;
|
|
11
|
+
author: string;
|
|
12
|
+
role?: string;
|
|
13
|
+
/** Avatar image. Falls back to the author's initials. */
|
|
14
|
+
avatar?: string;
|
|
15
|
+
tone?: Tone;
|
|
16
|
+
variant?: TestimonialVariant;
|
|
17
|
+
/** Bigger type, for a single pull quote. */
|
|
18
|
+
large?: boolean;
|
|
19
|
+
children?: Snippet;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
let {
|
|
23
|
+
quote,
|
|
24
|
+
author,
|
|
25
|
+
role,
|
|
26
|
+
avatar,
|
|
27
|
+
tone = 'brand',
|
|
28
|
+
variant = 'plain',
|
|
29
|
+
large = false,
|
|
30
|
+
class: className = '',
|
|
31
|
+
children,
|
|
32
|
+
...rest
|
|
33
|
+
}: Props = $props();
|
|
34
|
+
|
|
35
|
+
const variants = $derived({
|
|
36
|
+
plain: '',
|
|
37
|
+
card: 'border border-hairline bg-bg p-6',
|
|
38
|
+
accent: `${toneSurface[tone]} border-l-2 ${toneBorderLeft[tone]} p-6`
|
|
39
|
+
});
|
|
40
|
+
</script>
|
|
41
|
+
|
|
42
|
+
<figure class="flex flex-col gap-5 {variants[variant]} {className}" {...rest}>
|
|
43
|
+
<blockquote
|
|
44
|
+
class="font-sans leading-relaxed text-pretty text-text-secondary {large
|
|
45
|
+
? 'text-xl leading-relaxed sm:text-2xl'
|
|
46
|
+
: ''}"
|
|
47
|
+
>
|
|
48
|
+
<span class="{toneText[tone]} select-none" aria-hidden="true">“</span>{quote}<span
|
|
49
|
+
class="{toneText[tone]} select-none"
|
|
50
|
+
aria-hidden="true">”</span
|
|
51
|
+
>
|
|
52
|
+
</blockquote>
|
|
53
|
+
|
|
54
|
+
{#if children}
|
|
55
|
+
{@render children()}
|
|
56
|
+
{/if}
|
|
57
|
+
|
|
58
|
+
<figcaption class="flex items-center gap-3">
|
|
59
|
+
<Avatar src={avatar} name={author} size="sm" {tone} />
|
|
60
|
+
<div class="flex min-w-0 flex-col">
|
|
61
|
+
<span class="font-sans text-sm font-medium text-text">{author}</span>
|
|
62
|
+
{#if role}
|
|
63
|
+
<span class="font-sans text-xs text-text-muted">{role}</span>
|
|
64
|
+
{/if}
|
|
65
|
+
</div>
|
|
66
|
+
</figcaption>
|
|
67
|
+
</figure>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
3
|
+
import { type Tone } from '../../core/tones.js';
|
|
4
|
+
export type TestimonialVariant = 'plain' | 'card' | 'accent';
|
|
5
|
+
interface Props extends HTMLAttributes<HTMLElement> {
|
|
6
|
+
quote: string;
|
|
7
|
+
author: string;
|
|
8
|
+
role?: string;
|
|
9
|
+
/** Avatar image. Falls back to the author's initials. */
|
|
10
|
+
avatar?: string;
|
|
11
|
+
tone?: Tone;
|
|
12
|
+
variant?: TestimonialVariant;
|
|
13
|
+
/** Bigger type, for a single pull quote. */
|
|
14
|
+
large?: boolean;
|
|
15
|
+
children?: Snippet;
|
|
16
|
+
}
|
|
17
|
+
declare const Testimonial: import("svelte").Component<Props, {}, "">;
|
|
18
|
+
type Testimonial = ReturnType<typeof Testimonial>;
|
|
19
|
+
export default Testimonial;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import type { HTMLTextareaAttributes } from 'svelte/elements';
|
|
3
|
-
import { toneFocusBorder, type Tone } from '
|
|
3
|
+
import { toneFocusBorder, type Tone } from '../../core/tones.js';
|
|
4
4
|
|
|
5
5
|
interface Props extends HTMLTextareaAttributes {
|
|
6
6
|
value?: string;
|
|
@@ -1,26 +1,16 @@
|
|
|
1
|
-
<script module lang="ts">
|
|
2
|
-
export type Theme = 'light' | 'dark' | 'system';
|
|
3
|
-
|
|
4
|
-
const STORAGE_KEY = 'nqm-theme';
|
|
5
|
-
|
|
6
|
-
/** Writes the theme classes `theme.css` reads. Safe to call before mount. */
|
|
7
|
-
export function applyTheme(theme: Theme) {
|
|
8
|
-
const root = document.documentElement;
|
|
9
|
-
root.classList.toggle('dark', theme === 'dark');
|
|
10
|
-
root.classList.toggle('light', theme === 'light');
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
/** The stored choice, or `'system'` when the visitor has never picked one. */
|
|
14
|
-
export function storedTheme(): Theme {
|
|
15
|
-
if (typeof localStorage === 'undefined') return 'system';
|
|
16
|
-
const saved = localStorage.getItem(STORAGE_KEY);
|
|
17
|
-
return saved === 'light' || saved === 'dark' ? saved : 'system';
|
|
18
|
-
}
|
|
19
|
-
</script>
|
|
20
|
-
|
|
21
1
|
<script lang="ts">
|
|
22
|
-
|
|
23
|
-
|
|
2
|
+
// Choosing a theme is style-agnostic: every style reads the same two classes
|
|
3
|
+
// off <html>, so `applyTheme`, `storedTheme` and `Theme` live in core and
|
|
4
|
+
// are re-exported by the style barrel — not by this component.
|
|
5
|
+
import { focusRing, toneRing, toneSoft, type Tone } from '../../core/tones.js';
|
|
6
|
+
import {
|
|
7
|
+
applyTheme,
|
|
8
|
+
nextTheme,
|
|
9
|
+
persistTheme,
|
|
10
|
+
storedTheme,
|
|
11
|
+
type Theme
|
|
12
|
+
} from '../../core/theme.svelte.js';
|
|
13
|
+
import { useLocale } from '../../core/locale.svelte.js';
|
|
24
14
|
|
|
25
15
|
interface Props {
|
|
26
16
|
/** Bindable. `'system'` follows the OS until the visitor chooses. */
|
|
@@ -47,10 +37,7 @@
|
|
|
47
37
|
|
|
48
38
|
$effect(() => {
|
|
49
39
|
applyTheme(theme);
|
|
50
|
-
if (persist
|
|
51
|
-
if (theme === 'system') localStorage.removeItem(STORAGE_KEY);
|
|
52
|
-
else localStorage.setItem(STORAGE_KEY, theme);
|
|
53
|
-
}
|
|
40
|
+
if (persist) persistTheme(theme);
|
|
54
41
|
});
|
|
55
42
|
|
|
56
43
|
function set(next: Theme) {
|
|
@@ -59,7 +46,7 @@
|
|
|
59
46
|
}
|
|
60
47
|
|
|
61
48
|
function cycle() {
|
|
62
|
-
set(theme
|
|
49
|
+
set(nextTheme(theme));
|
|
63
50
|
}
|
|
64
51
|
|
|
65
52
|
const options = $derived([
|
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export declare function applyTheme(theme: Theme): void;
|
|
4
|
-
/** The stored choice, or `'system'` when the visitor has never picked one. */
|
|
5
|
-
export declare function storedTheme(): Theme;
|
|
6
|
-
import { type Tone } from '../tones.js';
|
|
1
|
+
import { type Tone } from '../../core/tones.js';
|
|
2
|
+
import { type Theme } from '../../core/theme.svelte.js';
|
|
7
3
|
interface Props {
|
|
8
4
|
/** Bindable. `'system'` follows the OS until the visitor chooses. */
|
|
9
5
|
theme?: Theme;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import { flip } from 'svelte/animate';
|
|
3
3
|
import { fly } from 'svelte/transition';
|
|
4
|
-
import { portal } from '
|
|
5
|
-
import { toast } from '
|
|
6
|
-
import { toneBorderSoft, toneSurface, toneText } from '
|
|
4
|
+
import { portal } from '../../core/actions/dismissable.js';
|
|
5
|
+
import { toast } from '../../core/toast.svelte.js';
|
|
6
|
+
import { toneBorderSoft, toneSurface, toneText } from '../../core/tones.js';
|
|
7
7
|
import Spinner from './Spinner.svelte';
|
|
8
|
-
import { useLocale } from '
|
|
8
|
+
import { useLocale } from '../../core/locale.svelte.js';
|
|
9
9
|
|
|
10
10
|
export type ToasterPosition =
|
|
11
11
|
'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Optional: the
|
|
3
|
-
* Work Sans (body), JetBrains Mono (labels and code). Import this
|
|
4
|
-
* project doesn't already self-host or load these fonts another
|
|
2
|
+
* Optional: the three typefaces this system is designed around — Sora
|
|
3
|
+
* (headings), Work Sans (body), JetBrains Mono (labels and code). Import this
|
|
4
|
+
* only if your project doesn't already self-host or load these fonts another
|
|
5
|
+
* way.
|
|
5
6
|
*
|
|
6
7
|
* These are plain `@font-face` rules rather than an `@import` of the Google
|
|
7
8
|
* stylesheet on purpose: `@import` is only valid before every other rule, so a
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Matte — Flat and sharp-cornered — no radius, no shadow, no gloss. Hairline rules and mono micro-labels do the work borders usually do.
|
|
3
|
+
*
|
|
4
|
+
* Generated by `bun run index`. Behaviour comes from
|
|
5
|
+
* `@nqmcreative/ui/core`, re-exported below so this one import covers
|
|
6
|
+
* the whole style.
|
|
7
|
+
*/
|
|
8
|
+
export { TONES, focusRing, peerFocusRing, toneBorder, toneBorderLeft, toneBorderSoft, toneFill, toneFocusBorder, toneFocusWithinBorder, toneHoverBorder, toneHoverText, tonePeerChecked, tonePeerFocus, toneRing, toneSoft, toneSoftHover, toneSolid, toneSolidHover, toneSurface, toneText, anchored, clickOutside, focusTrap, focusable, navigateList, portal, toast, locale, setLocale, provideLocale, useLocale, enUS, idID, LocaleStore, applyTheme, storedTheme, toISO, fromISO, today, isSameDay, addDays, addMonths, monthGrid, weekdayNames, monthLabel, isOutOfRange, formatISO, parseFormatted } from '../../core/index.js';
|
|
9
|
+
export type { Tone, Placement, AnchorOptions, ClickOutsideOptions, FocusTrapOptions, Toast, ToastOptions, ToastAction, Locale, Theme, DateFormat, TableSort, SortDirection, RejectedFile } from '../../core/index.js';
|
|
10
|
+
export { default as LocaleProvider } from './LocaleProvider.svelte';
|
|
11
|
+
export { default as Button } from './Button.svelte';
|
|
12
|
+
export type { ButtonVariant, ButtonSize } from './Button.svelte';
|
|
13
|
+
export { default as Link } from './Link.svelte';
|
|
14
|
+
export { default as Input } from './Input.svelte';
|
|
15
|
+
export type { InputSize } from './Input.svelte';
|
|
16
|
+
export { default as Textarea } from './Textarea.svelte';
|
|
17
|
+
export { default as Select } from './Select.svelte';
|
|
18
|
+
export type { SelectOption } from './Select.svelte';
|
|
19
|
+
export { default as Checkbox } from './Checkbox.svelte';
|
|
20
|
+
export { default as Radio } from './Radio.svelte';
|
|
21
|
+
export { default as Switch } from './Switch.svelte';
|
|
22
|
+
export type { SwitchSize } from './Switch.svelte';
|
|
23
|
+
export { default as Field } from './Field.svelte';
|
|
24
|
+
export { default as Label } from './Label.svelte';
|
|
25
|
+
export { default as PasswordInput } from './PasswordInput.svelte';
|
|
26
|
+
export { default as NumberInput } from './NumberInput.svelte';
|
|
27
|
+
export { default as Slider } from './Slider.svelte';
|
|
28
|
+
export { default as RadioGroup } from './RadioGroup.svelte';
|
|
29
|
+
export type { RadioOption } from './RadioGroup.svelte';
|
|
30
|
+
export { default as CheckboxGroup } from './CheckboxGroup.svelte';
|
|
31
|
+
export type { CheckboxOption } from './CheckboxGroup.svelte';
|
|
32
|
+
export { default as SegmentedControl } from './SegmentedControl.svelte';
|
|
33
|
+
export type { SegmentOption, SegmentedSize } from './SegmentedControl.svelte';
|
|
34
|
+
export { default as InputGroup } from './InputGroup.svelte';
|
|
35
|
+
export { default as Combobox } from './Combobox.svelte';
|
|
36
|
+
export type { ComboboxOption } from './Combobox.svelte';
|
|
37
|
+
export { default as MultiSelect } from './MultiSelect.svelte';
|
|
38
|
+
export type { MultiSelectOption } from './MultiSelect.svelte';
|
|
39
|
+
export { default as DatePicker } from './DatePicker.svelte';
|
|
40
|
+
export { default as Calendar } from './Calendar.svelte';
|
|
41
|
+
export { default as Dropzone } from './Dropzone.svelte';
|
|
42
|
+
export { default as Badge } from './Badge.svelte';
|
|
43
|
+
export type { BadgeTone, BadgeVariant, BadgeSize } from './Badge.svelte';
|
|
44
|
+
export { default as Avatar } from './Avatar.svelte';
|
|
45
|
+
export type { AvatarSize } from './Avatar.svelte';
|
|
46
|
+
export { default as AvatarGroup } from './AvatarGroup.svelte';
|
|
47
|
+
export { default as Card } from './Card.svelte';
|
|
48
|
+
export type { CardVariant } from './Card.svelte';
|
|
49
|
+
export { default as Stat } from './Stat.svelte';
|
|
50
|
+
export type { StatTrend } from './Stat.svelte';
|
|
51
|
+
export { default as Table } from './Table.svelte';
|
|
52
|
+
export type { TableColumn } from './Table.svelte';
|
|
53
|
+
export { default as Kbd } from './Kbd.svelte';
|
|
54
|
+
export { default as Alert } from './Alert.svelte';
|
|
55
|
+
export type { AlertVariant } from './Alert.svelte';
|
|
56
|
+
export { default as Progress } from './Progress.svelte';
|
|
57
|
+
export type { ProgressSize } from './Progress.svelte';
|
|
58
|
+
export { default as Spinner } from './Spinner.svelte';
|
|
59
|
+
export type { SpinnerSize } from './Spinner.svelte';
|
|
60
|
+
export { default as Skeleton } from './Skeleton.svelte';
|
|
61
|
+
export type { SkeletonVariant } from './Skeleton.svelte';
|
|
62
|
+
export { default as EmptyState } from './EmptyState.svelte';
|
|
63
|
+
export { default as Toaster } from './Toaster.svelte';
|
|
64
|
+
export type { ToasterPosition } from './Toaster.svelte';
|
|
65
|
+
export { default as Divider } from './Divider.svelte';
|
|
66
|
+
export type { DividerOrientation } from './Divider.svelte';
|
|
67
|
+
export { default as Tabs } from './Tabs.svelte';
|
|
68
|
+
export type { TabItem, TabsVariant } from './Tabs.svelte';
|
|
69
|
+
export { default as Accordion } from './Accordion.svelte';
|
|
70
|
+
export { default as AccordionItem } from './AccordionItem.svelte';
|
|
71
|
+
export { default as Breadcrumb } from './Breadcrumb.svelte';
|
|
72
|
+
export type { BreadcrumbItem } from './Breadcrumb.svelte';
|
|
73
|
+
export { default as Pagination } from './Pagination.svelte';
|
|
74
|
+
export { default as Steps } from './Steps.svelte';
|
|
75
|
+
export type { StepItem } from './Steps.svelte';
|
|
76
|
+
export { default as Navbar } from './Navbar.svelte';
|
|
77
|
+
export type { NavItem } from './Navbar.svelte';
|
|
78
|
+
export { default as Sidebar } from './Sidebar.svelte';
|
|
79
|
+
export type { SidebarItem, SidebarSection } from './Sidebar.svelte';
|
|
80
|
+
export { default as Footer } from './Footer.svelte';
|
|
81
|
+
export type { FooterLink, FooterColumn } from './Footer.svelte';
|
|
82
|
+
export { default as HeroSection } from './HeroSection.svelte';
|
|
83
|
+
export { default as FeatureGrid } from './FeatureGrid.svelte';
|
|
84
|
+
export type { FeatureColumns } from './FeatureGrid.svelte';
|
|
85
|
+
export { default as FeatureCard } from './FeatureCard.svelte';
|
|
86
|
+
export { default as PricingCard } from './PricingCard.svelte';
|
|
87
|
+
export { default as Testimonial } from './Testimonial.svelte';
|
|
88
|
+
export type { TestimonialVariant } from './Testimonial.svelte';
|
|
89
|
+
export { default as LogoCloud } from './LogoCloud.svelte';
|
|
90
|
+
export type { Logo } from './LogoCloud.svelte';
|
|
91
|
+
export { default as CTASection } from './CTASection.svelte';
|
|
92
|
+
export type { CTAVariant } from './CTASection.svelte';
|
|
93
|
+
export { default as StatsBand } from './StatsBand.svelte';
|
|
94
|
+
export type { BandStat } from './StatsBand.svelte';
|
|
95
|
+
export { default as Modal } from './Modal.svelte';
|
|
96
|
+
export type { ModalSize } from './Modal.svelte';
|
|
97
|
+
export { default as Drawer } from './Drawer.svelte';
|
|
98
|
+
export type { DrawerSide, DrawerSize } from './Drawer.svelte';
|
|
99
|
+
export { default as ConfirmDialog } from './ConfirmDialog.svelte';
|
|
100
|
+
export { default as CommandPalette } from './CommandPalette.svelte';
|
|
101
|
+
export type { CommandItem } from './CommandPalette.svelte';
|
|
102
|
+
export { default as ContextMenu } from './ContextMenu.svelte';
|
|
103
|
+
export { default as Dropdown } from './Dropdown.svelte';
|
|
104
|
+
export { default as MenuItem } from './MenuItem.svelte';
|
|
105
|
+
export { default as MenuSeparator } from './MenuSeparator.svelte';
|
|
106
|
+
export { default as Popover } from './Popover.svelte';
|
|
107
|
+
export { default as ThemeToggle } from './ThemeToggle.svelte';
|
|
108
|
+
export { default as Tooltip } from './Tooltip.svelte';
|
|
109
|
+
export type { TooltipPlacement } from './Tooltip.svelte';
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Matte — Flat and sharp-cornered — no radius, no shadow, no gloss. Hairline rules and mono micro-labels do the work borders usually do.
|
|
3
|
+
*
|
|
4
|
+
* Generated by `bun run index`. Behaviour comes from
|
|
5
|
+
* `@nqmcreative/ui/core`, re-exported below so this one import covers
|
|
6
|
+
* the whole style.
|
|
7
|
+
*/
|
|
8
|
+
/* --- shared behaviour --- */
|
|
9
|
+
export { TONES, focusRing, peerFocusRing, toneBorder, toneBorderLeft, toneBorderSoft, toneFill, toneFocusBorder, toneFocusWithinBorder, toneHoverBorder, toneHoverText, tonePeerChecked, tonePeerFocus, toneRing, toneSoft, toneSoftHover, toneSolid, toneSolidHover, toneSurface, toneText, anchored, clickOutside, focusTrap, focusable, navigateList, portal, toast, locale, setLocale, provideLocale, useLocale, enUS, idID, LocaleStore, applyTheme, storedTheme, toISO, fromISO, today, isSameDay, addDays, addMonths, monthGrid, weekdayNames, monthLabel, isOutOfRange, formatISO, parseFormatted } from '../../core/index.js';
|
|
10
|
+
/* --- locale --- */
|
|
11
|
+
export { default as LocaleProvider } from './LocaleProvider.svelte';
|
|
12
|
+
/* --- actions --- */
|
|
13
|
+
export { default as Button } from './Button.svelte';
|
|
14
|
+
export { default as Link } from './Link.svelte';
|
|
15
|
+
/* --- forms --- */
|
|
16
|
+
export { default as Input } from './Input.svelte';
|
|
17
|
+
export { default as Textarea } from './Textarea.svelte';
|
|
18
|
+
export { default as Select } from './Select.svelte';
|
|
19
|
+
export { default as Checkbox } from './Checkbox.svelte';
|
|
20
|
+
export { default as Radio } from './Radio.svelte';
|
|
21
|
+
export { default as Switch } from './Switch.svelte';
|
|
22
|
+
export { default as Field } from './Field.svelte';
|
|
23
|
+
export { default as Label } from './Label.svelte';
|
|
24
|
+
export { default as PasswordInput } from './PasswordInput.svelte';
|
|
25
|
+
export { default as NumberInput } from './NumberInput.svelte';
|
|
26
|
+
export { default as Slider } from './Slider.svelte';
|
|
27
|
+
export { default as RadioGroup } from './RadioGroup.svelte';
|
|
28
|
+
export { default as CheckboxGroup } from './CheckboxGroup.svelte';
|
|
29
|
+
export { default as SegmentedControl } from './SegmentedControl.svelte';
|
|
30
|
+
export { default as InputGroup } from './InputGroup.svelte';
|
|
31
|
+
export { default as Combobox } from './Combobox.svelte';
|
|
32
|
+
export { default as MultiSelect } from './MultiSelect.svelte';
|
|
33
|
+
export { default as DatePicker } from './DatePicker.svelte';
|
|
34
|
+
export { default as Calendar } from './Calendar.svelte';
|
|
35
|
+
export { default as Dropzone } from './Dropzone.svelte';
|
|
36
|
+
/* --- data display --- */
|
|
37
|
+
export { default as Badge } from './Badge.svelte';
|
|
38
|
+
export { default as Avatar } from './Avatar.svelte';
|
|
39
|
+
export { default as AvatarGroup } from './AvatarGroup.svelte';
|
|
40
|
+
export { default as Card } from './Card.svelte';
|
|
41
|
+
export { default as Stat } from './Stat.svelte';
|
|
42
|
+
export { default as Table } from './Table.svelte';
|
|
43
|
+
export { default as Kbd } from './Kbd.svelte';
|
|
44
|
+
/* --- feedback --- */
|
|
45
|
+
export { default as Alert } from './Alert.svelte';
|
|
46
|
+
export { default as Progress } from './Progress.svelte';
|
|
47
|
+
export { default as Spinner } from './Spinner.svelte';
|
|
48
|
+
export { default as Skeleton } from './Skeleton.svelte';
|
|
49
|
+
export { default as EmptyState } from './EmptyState.svelte';
|
|
50
|
+
export { default as Toaster } from './Toaster.svelte';
|
|
51
|
+
/* --- layout & navigation --- */
|
|
52
|
+
export { default as Divider } from './Divider.svelte';
|
|
53
|
+
export { default as Tabs } from './Tabs.svelte';
|
|
54
|
+
export { default as Accordion } from './Accordion.svelte';
|
|
55
|
+
export { default as AccordionItem } from './AccordionItem.svelte';
|
|
56
|
+
export { default as Breadcrumb } from './Breadcrumb.svelte';
|
|
57
|
+
export { default as Pagination } from './Pagination.svelte';
|
|
58
|
+
export { default as Steps } from './Steps.svelte';
|
|
59
|
+
/* --- app shell --- */
|
|
60
|
+
export { default as Navbar } from './Navbar.svelte';
|
|
61
|
+
export { default as Sidebar } from './Sidebar.svelte';
|
|
62
|
+
export { default as Footer } from './Footer.svelte';
|
|
63
|
+
/* --- marketing --- */
|
|
64
|
+
export { default as HeroSection } from './HeroSection.svelte';
|
|
65
|
+
export { default as FeatureGrid } from './FeatureGrid.svelte';
|
|
66
|
+
export { default as FeatureCard } from './FeatureCard.svelte';
|
|
67
|
+
export { default as PricingCard } from './PricingCard.svelte';
|
|
68
|
+
export { default as Testimonial } from './Testimonial.svelte';
|
|
69
|
+
export { default as LogoCloud } from './LogoCloud.svelte';
|
|
70
|
+
export { default as CTASection } from './CTASection.svelte';
|
|
71
|
+
export { default as StatsBand } from './StatsBand.svelte';
|
|
72
|
+
/* --- overlay --- */
|
|
73
|
+
export { default as Modal } from './Modal.svelte';
|
|
74
|
+
export { default as Drawer } from './Drawer.svelte';
|
|
75
|
+
export { default as ConfirmDialog } from './ConfirmDialog.svelte';
|
|
76
|
+
export { default as CommandPalette } from './CommandPalette.svelte';
|
|
77
|
+
export { default as ContextMenu } from './ContextMenu.svelte';
|
|
78
|
+
export { default as Dropdown } from './Dropdown.svelte';
|
|
79
|
+
export { default as MenuItem } from './MenuItem.svelte';
|
|
80
|
+
export { default as MenuSeparator } from './MenuSeparator.svelte';
|
|
81
|
+
export { default as Popover } from './Popover.svelte';
|
|
82
|
+
export { default as ThemeToggle } from './ThemeToggle.svelte';
|
|
83
|
+
export { default as Tooltip } from './Tooltip.svelte';
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* @nqmcreative/ui design tokens
|
|
3
|
-
* Mirrors the visual language of https://nqmcreative.com
|
|
4
3
|
* Flat, no shadows, no border-radius (except pills). Import this after
|
|
5
4
|
* `@import "tailwindcss";` in your app's CSS entry point. Ships light and dark
|
|
6
5
|
* palettes — see the bottom of this file.
|