seblify 0.1.4

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.
Files changed (138) hide show
  1. package/README.md +18 -0
  2. package/dist/components/AppShell.svelte +136 -0
  3. package/dist/components/AppShell.svelte.d.ts +13 -0
  4. package/dist/components/Banner.svelte +56 -0
  5. package/dist/components/Banner.svelte.d.ts +9 -0
  6. package/dist/components/Button.svelte +64 -0
  7. package/dist/components/Button.svelte.d.ts +13 -0
  8. package/dist/components/Icon.svelte +67 -0
  9. package/dist/components/Icon.svelte.d.ts +8 -0
  10. package/dist/components/Sidebar.svelte +106 -0
  11. package/dist/components/Sidebar.svelte.d.ts +14 -0
  12. package/dist/components/Snackbar.svelte +26 -0
  13. package/dist/components/Snackbar.svelte.d.ts +7 -0
  14. package/dist/components/Toast.svelte +27 -0
  15. package/dist/components/Toast.svelte.d.ts +7 -0
  16. package/dist/components/action/input/field/pin-input/PinInput.svelte +156 -0
  17. package/dist/components/action/input/field/pin-input/PinInput.svelte.d.ts +10 -0
  18. package/dist/components/action/input/select/checkbox/Checkbox.svelte +71 -0
  19. package/dist/components/action/input/select/checkbox/Checkbox.svelte.d.ts +10 -0
  20. package/dist/components/action/input/select/segment-control/SegmentControl.svelte +150 -0
  21. package/dist/components/action/input/select/segment-control/SegmentControl.svelte.d.ts +15 -0
  22. package/dist/components/action/input/select/slider/Slider.svelte +79 -0
  23. package/dist/components/action/input/select/slider/Slider.svelte.d.ts +11 -0
  24. package/dist/components/action/input/select/switch/Switch.svelte +122 -0
  25. package/dist/components/action/input/select/switch/Switch.svelte.d.ts +10 -0
  26. package/dist/components/action/input/select/theme-switch/ThemeSwitch.svelte +43 -0
  27. package/dist/components/action/input/select/theme-switch/ThemeSwitch.svelte.d.ts +10 -0
  28. package/dist/components/component-doc.d.ts +23 -0
  29. package/dist/components/component-doc.js +1 -0
  30. package/dist/components/display/annotation/badge/Badge.svelte +296 -0
  31. package/dist/components/display/annotation/badge/Badge.svelte.d.ts +16 -0
  32. package/dist/components/display/annotation/tag/Tag.svelte +227 -0
  33. package/dist/components/display/annotation/tag/Tag.svelte.d.ts +16 -0
  34. package/dist/components/display/annotation/tag-group/TagGroup.svelte +33 -0
  35. package/dist/components/display/annotation/tag-group/TagGroup.svelte.d.ts +12 -0
  36. package/dist/components/display/feedback/loading/loading-dots/LoadingDots.svelte +136 -0
  37. package/dist/components/display/feedback/loading/loading-dots/LoadingDots.svelte.d.ts +8 -0
  38. package/dist/components/display/feedback/loading/spinner/Spinner.svelte +110 -0
  39. package/dist/components/display/feedback/loading/spinner/Spinner.svelte.d.ts +8 -0
  40. package/dist/components/display/media/icon/Icon.svelte +41 -0
  41. package/dist/components/display/media/icon/Icon.svelte.d.ts +8 -0
  42. package/dist/components/display/media/icon/IconGlyph.svelte +56 -0
  43. package/dist/components/display/media/icon/IconGlyph.svelte.d.ts +8 -0
  44. package/dist/components/display/typography/eyebrow/Eyebrow.svelte +48 -0
  45. package/dist/components/display/typography/eyebrow/Eyebrow.svelte.d.ts +8 -0
  46. package/dist/components/display/typography/highlight/Highlight.svelte +160 -0
  47. package/dist/components/display/typography/highlight/Highlight.svelte.d.ts +10 -0
  48. package/dist/components/framework/layout/alignment/cluster/Cluster.svelte +142 -0
  49. package/dist/components/framework/layout/alignment/cluster/Cluster.svelte.d.ts +17 -0
  50. package/dist/components/framework/layout/alignment/grid/Grid.svelte +120 -0
  51. package/dist/components/framework/layout/alignment/grid/Grid.svelte.d.ts +18 -0
  52. package/dist/components/framework/layout/alignment/row/Row.svelte +142 -0
  53. package/dist/components/framework/layout/alignment/row/Row.svelte.d.ts +17 -0
  54. package/dist/components/framework/layout/alignment/stack/Stack.svelte +142 -0
  55. package/dist/components/framework/layout/alignment/stack/Stack.svelte.d.ts +17 -0
  56. package/dist/components/framework/layout/container/app-shell/AppShell.svelte +82 -0
  57. package/dist/components/framework/layout/container/app-shell/AppShell.svelte.d.ts +9 -0
  58. package/dist/components/framework/layout/container/page-header/PageHeader.svelte +114 -0
  59. package/dist/components/framework/layout/container/page-header/PageHeader.svelte.d.ts +11 -0
  60. package/dist/components/framework/layout/container/sidebar/Sidebar.svelte +134 -0
  61. package/dist/components/framework/layout/container/sidebar/Sidebar.svelte.d.ts +9 -0
  62. package/dist/components/framework/navigation/context/breadcrumb/Breadcrumb.svelte +72 -0
  63. package/dist/components/framework/navigation/context/breadcrumb/Breadcrumb.svelte.d.ts +10 -0
  64. package/dist/components/framework/navigation/sidenav/Sidenav.svelte +86 -0
  65. package/dist/components/framework/navigation/sidenav/Sidenav.svelte.d.ts +8 -0
  66. package/dist/components/framework/navigation/sidenav/SidenavTree.svelte +265 -0
  67. package/dist/components/framework/navigation/sidenav/SidenavTree.svelte.d.ts +14 -0
  68. package/dist/components/framework/navigation/sidenav/sidenav.d.ts +6 -0
  69. package/dist/components/framework/navigation/sidenav/sidenav.js +1 -0
  70. package/dist/components/framework/surface/paper/Paper.svelte +179 -0
  71. package/dist/components/framework/surface/paper/Paper.svelte.d.ts +18 -0
  72. package/dist/design-system/reserved-props/allowed-options.d.ts +46 -0
  73. package/dist/design-system/reserved-props/allowed-options.js +1 -0
  74. package/dist/design-system/reserved-props/blocked-props.d.ts +9 -0
  75. package/dist/design-system/reserved-props/blocked-props.js +1 -0
  76. package/dist/design-system/reserved-props/complex-types.d.ts +1 -0
  77. package/dist/design-system/reserved-props/complex-types.js +1 -0
  78. package/dist/design-system/reserved-props/type.d.ts +16 -0
  79. package/dist/design-system/reserved-props/type.js +1 -0
  80. package/dist/design-system/theme/tokens.d.ts +7 -0
  81. package/dist/design-system/theme/tokens.js +219 -0
  82. package/dist/icons/generated/chevron-double-down.svelte +16 -0
  83. package/dist/icons/generated/chevron-double-down.svelte.d.ts +7 -0
  84. package/dist/icons/generated/chevron-double-left.svelte +16 -0
  85. package/dist/icons/generated/chevron-double-left.svelte.d.ts +7 -0
  86. package/dist/icons/generated/chevron-double-right.svelte +16 -0
  87. package/dist/icons/generated/chevron-double-right.svelte.d.ts +7 -0
  88. package/dist/icons/generated/chevron-double-up.svelte +16 -0
  89. package/dist/icons/generated/chevron-double-up.svelte.d.ts +7 -0
  90. package/dist/icons/generated/chevron-down.svelte +16 -0
  91. package/dist/icons/generated/chevron-down.svelte.d.ts +7 -0
  92. package/dist/icons/generated/chevron-left.svelte +16 -0
  93. package/dist/icons/generated/chevron-left.svelte.d.ts +7 -0
  94. package/dist/icons/generated/chevron-right.svelte +16 -0
  95. package/dist/icons/generated/chevron-right.svelte.d.ts +7 -0
  96. package/dist/icons/generated/chevron-up.svelte +16 -0
  97. package/dist/icons/generated/chevron-up.svelte.d.ts +7 -0
  98. package/dist/icons/generated/fallback.svelte +17 -0
  99. package/dist/icons/generated/fallback.svelte.d.ts +7 -0
  100. package/dist/icons/generated/heart-circle-outline.svelte +16 -0
  101. package/dist/icons/generated/heart-circle-outline.svelte.d.ts +7 -0
  102. package/dist/icons/generated/heart-circle.svelte +16 -0
  103. package/dist/icons/generated/heart-circle.svelte.d.ts +7 -0
  104. package/dist/icons/generated/heart-half-full.svelte +16 -0
  105. package/dist/icons/generated/heart-half-full.svelte.d.ts +7 -0
  106. package/dist/icons/generated/heart-half-outline.svelte +16 -0
  107. package/dist/icons/generated/heart-half-outline.svelte.d.ts +7 -0
  108. package/dist/icons/generated/heart-half.svelte +16 -0
  109. package/dist/icons/generated/heart-half.svelte.d.ts +7 -0
  110. package/dist/icons/generated/heart-multiple-outline.svelte +23 -0
  111. package/dist/icons/generated/heart-multiple-outline.svelte.d.ts +7 -0
  112. package/dist/icons/generated/heart-multiple.svelte +23 -0
  113. package/dist/icons/generated/heart-multiple.svelte.d.ts +7 -0
  114. package/dist/icons/generated/heart-outline.svelte +16 -0
  115. package/dist/icons/generated/heart-outline.svelte.d.ts +7 -0
  116. package/dist/icons/generated/heart.svelte +16 -0
  117. package/dist/icons/generated/heart.svelte.d.ts +7 -0
  118. package/dist/icons/generated/home-edit-outline.svelte +16 -0
  119. package/dist/icons/generated/home-edit-outline.svelte.d.ts +7 -0
  120. package/dist/icons/generated/home-edit.svelte +16 -0
  121. package/dist/icons/generated/home-edit.svelte.d.ts +7 -0
  122. package/dist/icons/generated/home-outline.svelte +16 -0
  123. package/dist/icons/generated/home-outline.svelte.d.ts +7 -0
  124. package/dist/icons/generated/home.svelte +16 -0
  125. package/dist/icons/generated/home.svelte.d.ts +7 -0
  126. package/dist/icons/generated/index.d.ts +24 -0
  127. package/dist/icons/generated/index.js +24 -0
  128. package/dist/icons/generated/manifest.d.ts +7 -0
  129. package/dist/icons/generated/manifest.js +198 -0
  130. package/dist/icons/generated/tag-heart-outline.svelte +16 -0
  131. package/dist/icons/generated/tag-heart-outline.svelte.d.ts +7 -0
  132. package/dist/icons/generated/tag-heart.svelte +16 -0
  133. package/dist/icons/generated/tag-heart.svelte.d.ts +7 -0
  134. package/dist/index.d.ts +32 -0
  135. package/dist/index.js +28 -0
  136. package/dist/svelte.d.ts +18 -0
  137. package/dist/theme.css +161 -0
  138. package/package.json +69 -0
@@ -0,0 +1,14 @@
1
+ import SidenavTree from './SidenavTree.svelte';
2
+ import type { SidenavItem } from './sidenav';
3
+ declare const SidenavTree: import("svelte").Component<{
4
+ activeItemIds: string[];
5
+ collapsedItemId?: string | undefined;
6
+ items: SidenavItem[];
7
+ currentHref?: string | undefined;
8
+ depth: number;
9
+ expandedItemId?: string | undefined;
10
+ onToggle: (id: string, open: boolean) => void;
11
+ retainedExpandedItemId?: string | undefined;
12
+ }, {}, "">;
13
+ type SidenavTree = ReturnType<typeof SidenavTree>;
14
+ export default SidenavTree;
@@ -0,0 +1,6 @@
1
+ export interface SidenavItem {
2
+ id: string;
3
+ label: string;
4
+ href?: string;
5
+ children?: SidenavItem[];
6
+ }
@@ -0,0 +1,179 @@
1
+ <script lang="ts">
2
+ import type { SeblifyProps } from 'seblify';
3
+ import type { Snippet } from 'svelte';
4
+
5
+ type PaperElement = keyof HTMLElementTagNameMap;
6
+ type PaperPadding = 'none' | 'sm' | 'md' | 'lg';
7
+ type PaperRadius = 'sm' | 'md' | 'lg';
8
+ type PaperTone =
9
+ | 'neutral'
10
+ | 'primary'
11
+ | 'success'
12
+ | 'danger'
13
+ | 'warning'
14
+ | 'info'
15
+ | 'inverse';
16
+ type PaperVariant = 'solid' | 'soft' | 'tint' | 'plain';
17
+
18
+ type Props = SeblifyProps<{
19
+ as?: PaperElement;
20
+ bordered?: boolean;
21
+ children?: Snippet;
22
+ elevated?: boolean;
23
+ padding?: PaperPadding;
24
+ radius?: PaperRadius;
25
+ tone?: PaperTone;
26
+ variant?: PaperVariant;
27
+ }>;
28
+
29
+ let {
30
+ as = 'div',
31
+ bordered = true,
32
+ children,
33
+ elevated = false,
34
+ padding = 'md',
35
+ radius = 'md',
36
+ tone = 'neutral',
37
+ variant = 'solid',
38
+ }: Props = $props();
39
+ </script>
40
+
41
+ <svelte:element
42
+ this={as}
43
+ class="paper"
44
+ data-padding={padding}
45
+ data-radius={radius}
46
+ data-tone={tone}
47
+ data-variant={variant}
48
+ class:bordered
49
+ class:elevated
50
+ >
51
+ {@render children?.()}
52
+ </svelte:element>
53
+
54
+ <style>
55
+ .paper {
56
+ --paper-fill: var(--seblify-color-surface, #ffffff);
57
+ --paper-fill-text: var(--seblify-color-text, #172033);
58
+ --paper-surface: var(--seblify-color-surface-hover, #f1f4f9);
59
+ --paper-default-text: var(--seblify-color-text, #172033);
60
+ --paper-text: var(--seblify-color-text-muted, #516176);
61
+ --paper-border: var(--seblify-color-surface-muted, #d9e0e8);
62
+
63
+ border-radius: 0.625rem;
64
+ padding: 18px;
65
+ color: var(--paper-default-text);
66
+ background: var(--paper-fill);
67
+ }
68
+
69
+ .bordered {
70
+ border: 1px solid var(--paper-border);
71
+ }
72
+
73
+ .elevated {
74
+ box-shadow: var(--seblify-shadow-raised, 0 12px 28px rgb(23 32 51 / 22%));
75
+ }
76
+
77
+ .paper[data-padding='none'] {
78
+ padding: 0;
79
+ }
80
+
81
+ .paper[data-padding='sm'] {
82
+ padding: 12px;
83
+ }
84
+
85
+ .paper[data-padding='lg'] {
86
+ padding: 24px;
87
+ }
88
+
89
+ .paper[data-radius='sm'] {
90
+ border-radius: 0.5rem;
91
+ }
92
+
93
+ .paper[data-radius='lg'] {
94
+ border-radius: 1rem;
95
+ }
96
+
97
+ .paper[data-tone='neutral'] {
98
+ --paper-fill: var(--seblify-color-surface, #ffffff);
99
+ --paper-fill-text: var(--seblify-color-text, #172033);
100
+ --paper-surface: var(--seblify-color-surface-hover, #f1f4f9);
101
+ --paper-default-text: var(--seblify-color-text, #172033);
102
+ --paper-text: var(--seblify-color-text-muted, #516176);
103
+ --paper-border: var(--seblify-color-surface-muted, #d9e0e8);
104
+ }
105
+
106
+ .paper[data-tone='primary'] {
107
+ --paper-fill: var(--seblify-color-fill-primary, #146a6f);
108
+ --paper-fill-text: var(--seblify-color-fill-primary-text, #ffffff);
109
+ --paper-surface: var(--seblify-color-surface-accent, #f7fbfb);
110
+ --paper-default-text: var(--seblify-color-text, #172033);
111
+ --paper-text: var(--seblify-color-fill-primary, #146a6f);
112
+ --paper-border: var(--seblify-color-border-accent, #9ab7ba);
113
+ }
114
+
115
+ .paper[data-tone='success'] {
116
+ --paper-fill: var(--seblify-color-fill-success, #1f7a3f);
117
+ --paper-fill-text: var(--seblify-color-fill-success-text, #ffffff);
118
+ --paper-surface: var(--seblify-color-success-surface, #e8f8ee);
119
+ --paper-default-text: var(--seblify-color-text, #172033);
120
+ --paper-text: var(--seblify-color-success-text, #143d25);
121
+ --paper-border: var(--seblify-color-success-border, #b8ddc7);
122
+ }
123
+
124
+ .paper[data-tone='danger'] {
125
+ --paper-fill: var(--seblify-color-fill-danger, #c93434);
126
+ --paper-fill-text: var(--seblify-color-fill-danger-text, #ffffff);
127
+ --paper-surface: var(--seblify-color-error-surface, #fff0f0);
128
+ --paper-default-text: var(--seblify-color-text, #172033);
129
+ --paper-text: var(--seblify-color-error-text, #5a1717);
130
+ --paper-border: var(--seblify-color-error-border, #efb6b6);
131
+ }
132
+
133
+ .paper[data-tone='warning'] {
134
+ --paper-fill: var(--seblify-color-fill-warning, #8a5a00);
135
+ --paper-fill-text: var(--seblify-color-fill-warning-text, #ffffff);
136
+ --paper-surface: var(--seblify-color-warning-surface, #fff6d8);
137
+ --paper-default-text: var(--seblify-color-text, #172033);
138
+ --paper-text: var(--seblify-color-warning-text, #4d3900);
139
+ --paper-border: var(--seblify-color-warning-border, #e8d28f);
140
+ }
141
+
142
+ .paper[data-tone='info'] {
143
+ --paper-fill: var(--seblify-color-fill-info, #1f6fb2);
144
+ --paper-fill-text: var(--seblify-color-fill-info-text, #ffffff);
145
+ --paper-surface: var(--seblify-color-info-surface, #eaf3ff);
146
+ --paper-default-text: var(--seblify-color-text, #172033);
147
+ --paper-text: var(--seblify-color-info-text, #102f55);
148
+ --paper-border: var(--seblify-color-info-border, #bfd1ea);
149
+ }
150
+
151
+ .paper[data-tone='inverse'] {
152
+ --paper-fill: var(--seblify-color-surface-inverse, #172033);
153
+ --paper-fill-text: var(--seblify-color-text-inverse, #ffffff);
154
+ --paper-surface: var(--seblify-color-surface-inverse-hover, #263043);
155
+ --paper-default-text: var(--seblify-color-text-inverse, #ffffff);
156
+ --paper-text: var(--seblify-color-text-inverse, #ffffff);
157
+ --paper-border: var(--seblify-color-border-inverse, #263043);
158
+ }
159
+
160
+ .paper[data-variant='solid'] {
161
+ color: var(--paper-fill-text);
162
+ background: var(--paper-fill);
163
+ }
164
+
165
+ .paper[data-variant='soft'] {
166
+ color: var(--paper-default-text);
167
+ background: var(--paper-surface);
168
+ }
169
+
170
+ .paper[data-variant='tint'] {
171
+ color: var(--paper-text);
172
+ background: var(--paper-surface);
173
+ }
174
+
175
+ .paper[data-variant='plain'] {
176
+ color: var(--paper-text);
177
+ background: transparent;
178
+ }
179
+ </style>
@@ -0,0 +1,18 @@
1
+ import type { Snippet } from 'svelte';
2
+ type PaperElement = keyof HTMLElementTagNameMap;
3
+ type PaperPadding = 'none' | 'sm' | 'md' | 'lg';
4
+ type PaperRadius = 'sm' | 'md' | 'lg';
5
+ type PaperTone = 'neutral' | 'primary' | 'success' | 'danger' | 'warning' | 'info' | 'inverse';
6
+ type PaperVariant = 'solid' | 'soft' | 'tint' | 'plain';
7
+ declare const Paper: import("svelte").Component<{
8
+ as?: PaperElement | undefined;
9
+ bordered?: boolean | undefined;
10
+ children?: Snippet | undefined;
11
+ elevated?: boolean | undefined;
12
+ padding?: PaperPadding | undefined;
13
+ radius?: PaperRadius | undefined;
14
+ tone?: PaperTone | undefined;
15
+ variant?: PaperVariant | undefined;
16
+ }, {}, "">;
17
+ type Paper = ReturnType<typeof Paper>;
18
+ export default Paper;
@@ -0,0 +1,46 @@
1
+ import type { Snippet } from 'svelte';
2
+ import { CustomCssSize } from './complex-types';
3
+ type SizeKeys = 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl';
4
+ type ToneOptions = 'neutral' | 'primary' | 'success' | 'danger' | 'warning' | 'info' | 'inverse';
5
+ type PlacementOptions = 'top-start' | 'top' | 'top-end' | 'end' | 'bottom-end' | 'bottom' | 'bottom-start' | 'start';
6
+ type VariantOptions = 'solid' | 'soft' | 'tint' | 'plain';
7
+ type BorderOptions = 'none' | 'solid' | 'dash';
8
+ type ShapeOptions = 'pill' | 'dot';
9
+ type AlignOptions = 'start' | 'center' | 'end' | 'stretch' | 'baseline';
10
+ type JustifyOptions = 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';
11
+ type DirOptions = 'ltr' | 'rtl' | 'auto';
12
+ export type SeblifyReservedPropOptions = {
13
+ class: string;
14
+ as: keyof HTMLElementTagNameMap;
15
+ children: Snippet;
16
+ start: Snippet;
17
+ end: Snippet;
18
+ title: string;
19
+ name: string;
20
+ label: string;
21
+ text: string;
22
+ description: string;
23
+ source: string;
24
+ min: number;
25
+ max: number;
26
+ step: number;
27
+ length: number;
28
+ open: boolean;
29
+ checked: boolean;
30
+ disabled: boolean;
31
+ border: BorderOptions & {};
32
+ radius: (SizeKeys | 'none' | 'full') & {};
33
+ shape: ShapeOptions & {};
34
+ tone: ToneOptions & {};
35
+ variant: VariantOptions & {};
36
+ size: (SizeKeys & {}) | CustomCssSize;
37
+ padding: ((SizeKeys | 'none') & {}) | CustomCssSize;
38
+ gap: ((SizeKeys | 'none') & {}) | CustomCssSize;
39
+ rowGap: ((SizeKeys | 'none') & {}) | CustomCssSize;
40
+ columnGap: ((SizeKeys | 'none') & {}) | CustomCssSize;
41
+ placement: PlacementOptions & {};
42
+ align: AlignOptions & {};
43
+ justify: JustifyOptions & {};
44
+ dir: DirOptions & {};
45
+ };
46
+ export {};
@@ -0,0 +1,9 @@
1
+ export type SeblifyBlockedProps = {
2
+ type: 'Guard: `type` prop not allowed. Use `variant` instead';
3
+ theme: 'Guard: `theme` prop not allowed. Use `tone` instead';
4
+ ltr: 'Guard: `ltr` prop not allowed. Use `dir` instead';
5
+ rtl: 'Guard: `rtl` prop not allowed. Use `dir` instead';
6
+ direction: 'Guard: `direction` prop not allowed. Use `dir` instead';
7
+ space: 'Guard: `space` prop not allowed. Use `gap` instead';
8
+ spacing: 'Guard: `spacing` prop not allowed. Use `gap` instead';
9
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export type CustomCssSize = number | `${number}px` | `${number}rem` | `${number}em` | `${number}%` | `${number}vh` | `${number}vw` | `${number}vmin` | `${number}vmax` | `${number}ch` | `${number}ex` | `${number}cm` | `${number}mm` | `${number}in` | `${number}pt` | `${number}pc` | `0` | `var(${string})` | `calc(${string})` | `clamp(${string})` | `min(${string})` | `max(${string})`;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,16 @@
1
+ import { SeblifyReservedPropOptions } from './allowed-options';
2
+ import { SeblifyBlockedProps } from './blocked-props';
3
+ type SeblifyPropOptions = SeblifyBlockedProps & SeblifyReservedPropOptions;
4
+ type InvalidPropValue<T, Key extends PropertyKey, Allowed> = Key extends keyof T ? Exclude<T[Key], Allowed | undefined> : never;
5
+ type ValidatePropValue<T, Key extends keyof T, AllowedValue> = InvalidPropValue<T, Key, AllowedValue> extends never ? T[Key] : AllowedValue;
6
+ type SeblifyPropValue<T, Key extends keyof T> = Key extends keyof SeblifyPropOptions ? ValidatePropValue<T, Key, SeblifyPropOptions[Key]> : T[Key];
7
+ type SeblifyPropMap<T> = {
8
+ [Key in keyof T]: SeblifyPropValue<T, Key>;
9
+ };
10
+ /**
11
+ * Validates common Seblify prop names like `tone`, `variant`, `border`,
12
+ * `radius`, `placement`, and `shape` against the global allowed value families.
13
+ * Keeps the original prop shape and only replaces invalid common props with an error type.
14
+ */
15
+ export type SeblifyProps<T extends SeblifyPropMap<T>> = SeblifyPropMap<T>;
16
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,7 @@
1
+ declare const themeTokens: {
2
+ name: string;
3
+ category: string;
4
+ value: string;
5
+ description: string;
6
+ }[];
7
+ export default themeTokens;
@@ -0,0 +1,219 @@
1
+ const themeTokens = [
2
+ {
3
+ name: '--seblify-color-page',
4
+ category: 'Surface',
5
+ value: '#f4f6f8',
6
+ description: 'Default page background behind component surfaces.',
7
+ },
8
+ {
9
+ name: '--seblify-color-text',
10
+ category: 'Text',
11
+ value: '#172033',
12
+ description: 'Primary text color on page and surface backgrounds.',
13
+ },
14
+ {
15
+ name: '--seblify-color-text-muted',
16
+ category: 'Text',
17
+ value: '#516176',
18
+ description: 'Secondary text for descriptions, helper text, and metadata.',
19
+ },
20
+ {
21
+ name: '--seblify-color-text-subtle',
22
+ category: 'Text',
23
+ value: '#667085',
24
+ description: 'Lower-emphasis text for labels, separators, and quiet UI.',
25
+ },
26
+ {
27
+ name: '--seblify-color-text-inverse',
28
+ category: 'Text',
29
+ value: '#ffffff',
30
+ description: 'Text placed on inverse surfaces.',
31
+ },
32
+ {
33
+ name: '--seblify-color-surface',
34
+ category: 'Surface',
35
+ value: '#ffffff',
36
+ description: 'Default component surface.',
37
+ },
38
+ {
39
+ name: '--seblify-color-surface-raised',
40
+ category: 'Surface',
41
+ value: '#ffffff',
42
+ description: 'Raised surface for panels, popovers, and elevated UI.',
43
+ },
44
+ {
45
+ name: '--seblify-color-surface-muted',
46
+ category: 'Surface',
47
+ value: '#d9e0e8',
48
+ description: 'Muted surface for inactive controls and subtle areas.',
49
+ },
50
+ {
51
+ name: '--seblify-color-surface-hover',
52
+ category: 'Surface',
53
+ value: '#f1f4f9',
54
+ description: 'Surface color for hover states on neutral controls.',
55
+ },
56
+ {
57
+ name: '--seblify-color-surface-accent',
58
+ category: 'Surface',
59
+ value: '#f7fbfb',
60
+ description: 'Subtle accent surface for selected or filled areas.',
61
+ },
62
+ {
63
+ name: '--seblify-color-surface-inverse',
64
+ category: 'Surface',
65
+ value: '#172033',
66
+ description: 'High-contrast inverse surface for sidebars and snackbars.',
67
+ },
68
+ {
69
+ name: '--seblify-color-surface-inverse-hover',
70
+ category: 'Surface',
71
+ value: '#263043',
72
+ description: 'Hover or active state on inverse surfaces.',
73
+ },
74
+ {
75
+ name: '--seblify-color-border',
76
+ category: 'Border',
77
+ value: '#c8d2df',
78
+ description: 'Default border for controls and containers.',
79
+ },
80
+ {
81
+ name: '--seblify-color-border-strong',
82
+ category: 'Border',
83
+ value: '#aab7c5',
84
+ description: 'Stronger border for interactive controls.',
85
+ },
86
+ {
87
+ name: '--seblify-color-border-accent',
88
+ category: 'Border',
89
+ value: '#9ab7ba',
90
+ description: 'Accent border for selected or filled states.',
91
+ },
92
+ {
93
+ name: '--seblify-color-border-inverse',
94
+ category: 'Border',
95
+ value: '#263043',
96
+ description: 'Border used on inverse surfaces.',
97
+ },
98
+ {
99
+ name: '--seblify-color-fill-accent',
100
+ category: 'Fill',
101
+ value: '#146a6f',
102
+ description: 'Solid accent fill for selected controls and primary states.',
103
+ },
104
+ {
105
+ name: '--seblify-color-fill-accent-hover',
106
+ category: 'Fill',
107
+ value: '#0d4d52',
108
+ description: 'Hover fill for accent controls.',
109
+ },
110
+ {
111
+ name: '--seblify-color-fill-accent-text',
112
+ category: 'Fill',
113
+ value: '#ffffff',
114
+ description: 'Text or foreground placed on accent fills.',
115
+ },
116
+ {
117
+ name: '--seblify-color-info-surface',
118
+ category: 'Status',
119
+ value: '#eaf3ff',
120
+ description: 'Info status surface.',
121
+ },
122
+ {
123
+ name: '--seblify-color-info-border',
124
+ category: 'Status',
125
+ value: '#bfd1ea',
126
+ description: 'Info status border.',
127
+ },
128
+ {
129
+ name: '--seblify-color-info-text',
130
+ category: 'Status',
131
+ value: '#102f55',
132
+ description: 'Text on info status surfaces.',
133
+ },
134
+ {
135
+ name: '--seblify-color-success-surface',
136
+ category: 'Status',
137
+ value: '#e8f8ee',
138
+ description: 'Success status surface.',
139
+ },
140
+ {
141
+ name: '--seblify-color-success-border',
142
+ category: 'Status',
143
+ value: '#b8ddc7',
144
+ description: 'Success status border.',
145
+ },
146
+ {
147
+ name: '--seblify-color-success-text',
148
+ category: 'Status',
149
+ value: '#143d25',
150
+ description: 'Text on success status surfaces.',
151
+ },
152
+ {
153
+ name: '--seblify-color-warning-surface',
154
+ category: 'Status',
155
+ value: '#fff6d8',
156
+ description: 'Warning status surface.',
157
+ },
158
+ {
159
+ name: '--seblify-color-warning-border',
160
+ category: 'Status',
161
+ value: '#e8d28f',
162
+ description: 'Warning status border.',
163
+ },
164
+ {
165
+ name: '--seblify-color-warning-text',
166
+ category: 'Status',
167
+ value: '#4d3900',
168
+ description: 'Text on warning status surfaces.',
169
+ },
170
+ {
171
+ name: '--seblify-color-error-surface',
172
+ category: 'Status',
173
+ value: '#fff0f0',
174
+ description: 'Error status surface.',
175
+ },
176
+ {
177
+ name: '--seblify-color-error-border',
178
+ category: 'Status',
179
+ value: '#efb6b6',
180
+ description: 'Error status border.',
181
+ },
182
+ {
183
+ name: '--seblify-color-error-text',
184
+ category: 'Status',
185
+ value: '#5a1717',
186
+ description: 'Text on error status surfaces.',
187
+ },
188
+ {
189
+ name: '--seblify-color-focus-ring',
190
+ category: 'Focus',
191
+ value: '#9bd4d8',
192
+ description: 'Visible keyboard focus outline.',
193
+ },
194
+ {
195
+ name: '--seblify-opacity-disabled',
196
+ category: 'State',
197
+ value: '0.56',
198
+ description: 'Opacity for disabled controls.',
199
+ },
200
+ {
201
+ name: '--seblify-shadow-control',
202
+ category: 'Shadow',
203
+ value: '0 1px 3px rgb(16 24 40 / 24%)',
204
+ description: 'Small control shadow, currently used by switch thumbs.',
205
+ },
206
+ {
207
+ name: '--seblify-shadow-raised',
208
+ category: 'Shadow',
209
+ value: '0 12px 28px rgb(23 32 51 / 22%)',
210
+ description: 'Raised shadow for floating UI.',
211
+ },
212
+ {
213
+ name: '--seblify-shadow-status',
214
+ category: 'Shadow',
215
+ value: '0 10px 24px rgb(20 61 37 / 14%)',
216
+ description: 'Soft shadow for status messages.',
217
+ },
218
+ ];
219
+ export default themeTokens;
@@ -0,0 +1,16 @@
1
+ <script lang="ts">
2
+ import IconGlyph from '../../components/display/media/icon/IconGlyph.svelte';
3
+
4
+ interface Props {
5
+ label?: string;
6
+ size?: number | string;
7
+ }
8
+
9
+ let { label, size }: Props = $props();
10
+ const source = `<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
11
+ <path d="M16.59 5.58997L18 6.99997L12 13L6 6.99997L7.41 5.58997L12 10.17L16.59 5.58997ZM16.59 11.59L18 13L12 19L6 13L7.41 11.59L12 16.17L16.59 11.59Z" fill="black"/>
12
+ </svg>
13
+ `;
14
+ </script>
15
+
16
+ <IconGlyph {label} {size} {source} />
@@ -0,0 +1,7 @@
1
+ interface Props {
2
+ label?: string;
3
+ size?: number | string;
4
+ }
5
+ declare const ChevronDoubleDown: import("svelte").Component<Props, {}, "">;
6
+ type ChevronDoubleDown = ReturnType<typeof ChevronDoubleDown>;
7
+ export default ChevronDoubleDown;
@@ -0,0 +1,16 @@
1
+ <script lang="ts">
2
+ import IconGlyph from '../../components/display/media/icon/IconGlyph.svelte';
3
+
4
+ interface Props {
5
+ label?: string;
6
+ size?: number | string;
7
+ }
8
+
9
+ let { label, size }: Props = $props();
10
+ const source = `<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
11
+ <path d="M18.41 7.41L17 6L11 12L17 18L18.41 16.59L13.83 12L18.41 7.41ZM12.41 7.41L11 6L5 12L11 18L12.41 16.59L7.83 12L12.41 7.41Z" fill="black"/>
12
+ </svg>
13
+ `;
14
+ </script>
15
+
16
+ <IconGlyph {label} {size} {source} />
@@ -0,0 +1,7 @@
1
+ interface Props {
2
+ label?: string;
3
+ size?: number | string;
4
+ }
5
+ declare const ChevronDoubleLeft: import("svelte").Component<Props, {}, "">;
6
+ type ChevronDoubleLeft = ReturnType<typeof ChevronDoubleLeft>;
7
+ export default ChevronDoubleLeft;
@@ -0,0 +1,16 @@
1
+ <script lang="ts">
2
+ import IconGlyph from '../../components/display/media/icon/IconGlyph.svelte';
3
+
4
+ interface Props {
5
+ label?: string;
6
+ size?: number | string;
7
+ }
8
+
9
+ let { label, size }: Props = $props();
10
+ const source = `<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
11
+ <path d="M5.59009 7.41L7.00009 6L13.0001 12L7.00009 18L5.59009 16.59L10.1701 12L5.59009 7.41ZM11.5901 7.41L13.0001 6L19.0001 12L13.0001 18L11.5901 16.59L16.1701 12L11.5901 7.41Z" fill="black"/>
12
+ </svg>
13
+ `;
14
+ </script>
15
+
16
+ <IconGlyph {label} {size} {source} />
@@ -0,0 +1,7 @@
1
+ interface Props {
2
+ label?: string;
3
+ size?: number | string;
4
+ }
5
+ declare const ChevronDoubleRight: import("svelte").Component<Props, {}, "">;
6
+ type ChevronDoubleRight = ReturnType<typeof ChevronDoubleRight>;
7
+ export default ChevronDoubleRight;
@@ -0,0 +1,16 @@
1
+ <script lang="ts">
2
+ import IconGlyph from '../../components/display/media/icon/IconGlyph.svelte';
3
+
4
+ interface Props {
5
+ label?: string;
6
+ size?: number | string;
7
+ }
8
+
9
+ let { label, size }: Props = $props();
10
+ const source = `<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
11
+ <path d="M7.41 18.41L6 17L12 11L18 17L16.59 18.41L12 13.83L7.41 18.41ZM7.41 12.41L6 11L12 5L18 11L16.59 12.41L12 7.83L7.41 12.41Z" fill="black"/>
12
+ </svg>
13
+ `;
14
+ </script>
15
+
16
+ <IconGlyph {label} {size} {source} />
@@ -0,0 +1,7 @@
1
+ interface Props {
2
+ label?: string;
3
+ size?: number | string;
4
+ }
5
+ declare const ChevronDoubleUp: import("svelte").Component<Props, {}, "">;
6
+ type ChevronDoubleUp = ReturnType<typeof ChevronDoubleUp>;
7
+ export default ChevronDoubleUp;
@@ -0,0 +1,16 @@
1
+ <script lang="ts">
2
+ import IconGlyph from '../../components/display/media/icon/IconGlyph.svelte';
3
+
4
+ interface Props {
5
+ label?: string;
6
+ size?: number | string;
7
+ }
8
+
9
+ let { label, size }: Props = $props();
10
+ const source = `<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
11
+ <path d="M7.41 8.57996L12 13.17L16.59 8.57996L18 9.99996L12 16L6 9.99996L7.41 8.57996Z" fill="black"/>
12
+ </svg>
13
+ `;
14
+ </script>
15
+
16
+ <IconGlyph {label} {size} {source} />
@@ -0,0 +1,7 @@
1
+ interface Props {
2
+ label?: string;
3
+ size?: number | string;
4
+ }
5
+ declare const ChevronDown: import("svelte").Component<Props, {}, "">;
6
+ type ChevronDown = ReturnType<typeof ChevronDown>;
7
+ export default ChevronDown;