spaper 1.4.0 → 2.0.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.
Files changed (206) hide show
  1. package/README.md +20 -59
  2. package/dist/components/Alert.svelte +83 -0
  3. package/dist/components/Alert.svelte.d.ts +15 -0
  4. package/dist/components/Article.svelte +63 -0
  5. package/dist/components/Article.svelte.d.ts +17 -0
  6. package/dist/components/Avatar/Avatar.svelte +102 -0
  7. package/dist/components/Avatar/Avatar.svelte.d.ts +16 -0
  8. package/dist/components/Avatar/AvatarGroup.svelte +21 -0
  9. package/dist/components/Avatar/AvatarGroup.svelte.d.ts +9 -0
  10. package/dist/components/Avatar/index.d.ts +2 -0
  11. package/dist/components/Avatar/index.js +2 -0
  12. package/dist/components/Breadcrumb.svelte +33 -0
  13. package/dist/components/Breadcrumb.svelte.d.ts +12 -0
  14. package/dist/components/Button.svelte +174 -0
  15. package/dist/components/Button.svelte.d.ts +33 -0
  16. package/dist/components/Card.svelte +101 -0
  17. package/dist/components/Card.svelte.d.ts +22 -0
  18. package/dist/components/Carousel/Carousel.svelte +204 -0
  19. package/dist/components/Carousel/Carousel.svelte.d.ts +27 -0
  20. package/dist/components/Carousel/CarouselItem.svelte +48 -0
  21. package/dist/components/Carousel/CarouselItem.svelte.d.ts +7 -0
  22. package/{components → dist/components}/Carousel/index.d.ts +1 -0
  23. package/dist/components/Carousel/types.d.ts +22 -0
  24. package/dist/components/CloseButton.svelte +34 -0
  25. package/dist/components/CloseButton.svelte.d.ts +8 -0
  26. package/dist/components/Collapsible.svelte +64 -0
  27. package/dist/components/Collapsible.svelte.d.ts +16 -0
  28. package/dist/components/CopyButton.svelte +54 -0
  29. package/dist/components/CopyButton.svelte.d.ts +13 -0
  30. package/dist/components/Divider.svelte +9 -0
  31. package/dist/components/Divider.svelte.d.ts +6 -0
  32. package/dist/components/Form/Checkbox.svelte +54 -0
  33. package/dist/components/Form/Checkbox.svelte.d.ts +15 -0
  34. package/dist/components/Form/Input.svelte +105 -0
  35. package/dist/components/Form/Input.svelte.d.ts +21 -0
  36. package/dist/components/Form/NumberInput/DecrementButton.svelte +14 -0
  37. package/dist/components/Form/NumberInput/DecrementButton.svelte.d.ts +9 -0
  38. package/dist/components/Form/NumberInput/IncrementButton.svelte +14 -0
  39. package/dist/components/Form/NumberInput/IncrementButton.svelte.d.ts +9 -0
  40. package/dist/components/Form/NumberInput/NumberInput.svelte +227 -0
  41. package/dist/components/Form/NumberInput/NumberInput.svelte.d.ts +34 -0
  42. package/dist/components/Form/Radio.svelte +42 -0
  43. package/dist/components/Form/Radio.svelte.d.ts +13 -0
  44. package/dist/components/Form/Select.svelte +61 -0
  45. package/dist/components/Form/Select.svelte.d.ts +12 -0
  46. package/dist/components/Form/Slider.svelte +129 -0
  47. package/dist/components/Form/Slider.svelte.d.ts +22 -0
  48. package/dist/components/Form/Switch.svelte +101 -0
  49. package/dist/components/Form/Switch.svelte.d.ts +22 -0
  50. package/dist/components/Form/index.d.ts +9 -0
  51. package/{components → dist/components}/Form/index.js +1 -2
  52. package/dist/components/Hero.svelte +78 -0
  53. package/dist/components/Hero.svelte.d.ts +17 -0
  54. package/dist/components/Icon.svelte +102 -0
  55. package/dist/components/Icon.svelte.d.ts +27 -0
  56. package/dist/components/Modal/Modal.svelte +120 -0
  57. package/dist/components/Modal/Modal.svelte.d.ts +19 -0
  58. package/dist/components/Modal/index.d.ts +12 -0
  59. package/dist/components/Modal/index.js +30 -0
  60. package/dist/components/Navbar.svelte +98 -0
  61. package/dist/components/Navbar.svelte.d.ts +11 -0
  62. package/dist/components/Pagination/Arrow.svelte +29 -0
  63. package/dist/components/Pagination/Arrow.svelte.d.ts +8 -0
  64. package/dist/components/Pagination/NavigationButton.svelte +33 -0
  65. package/dist/components/Pagination/NavigationButton.svelte.d.ts +13 -0
  66. package/dist/components/Pagination/Pagination.svelte +209 -0
  67. package/dist/components/Pagination/Pagination.svelte.d.ts +32 -0
  68. package/{components → dist/components}/Pagination/arrow-dimension.js +3 -3
  69. package/{components → dist/components}/Pagination/index.d.ts +1 -1
  70. package/dist/components/Popover.svelte +64 -0
  71. package/dist/components/Popover.svelte.d.ts +17 -0
  72. package/dist/components/Progress.svelte +87 -0
  73. package/dist/components/Progress.svelte.d.ts +19 -0
  74. package/dist/components/ScrollTop.svelte +79 -0
  75. package/dist/components/ScrollTop.svelte.d.ts +17 -0
  76. package/dist/components/Skeleton.svelte +104 -0
  77. package/dist/components/Skeleton.svelte.d.ts +21 -0
  78. package/dist/components/Spinner.svelte +59 -0
  79. package/dist/components/Spinner.svelte.d.ts +16 -0
  80. package/dist/components/Table/Table.svelte +292 -0
  81. package/dist/components/Table/Table.svelte.d.ts +25 -0
  82. package/dist/components/Table/TableColumn.svelte +62 -0
  83. package/dist/components/Table/TableColumn.svelte.d.ts +15 -0
  84. package/dist/components/Table/context.d.ts +13 -0
  85. package/dist/components/Table/context.js +1 -0
  86. package/dist/components/Table/index.d.ts +2 -0
  87. package/dist/components/Table/index.js +2 -0
  88. package/dist/components/Tabs/Tab.svelte +90 -0
  89. package/dist/components/Tabs/Tab.svelte.d.ts +14 -0
  90. package/dist/components/Tabs/Tabs.svelte +138 -0
  91. package/dist/components/Tabs/Tabs.svelte.d.ts +13 -0
  92. package/{components → dist/components}/Tabs/utils.d.ts +4 -3
  93. package/dist/components/Tag.svelte +38 -0
  94. package/dist/components/Tag.svelte.d.ts +10 -0
  95. package/dist/components/Toast/Toast.svelte +105 -0
  96. package/dist/components/Toast/Toast.svelte.d.ts +6 -0
  97. package/dist/components/Toast/ToastContainer.svelte +101 -0
  98. package/dist/components/Toast/ToastContainer.svelte.d.ts +8 -0
  99. package/{components → dist/components}/Toast/index.d.ts +19 -5
  100. package/dist/components/Toast/index.js +100 -0
  101. package/dist/icons.d.ts +3 -0
  102. package/dist/icons.js +2 -0
  103. package/dist/index.d.ts +31 -0
  104. package/{index.js → dist/index.js} +10 -5
  105. package/dist/type-icons.d.ts +4 -0
  106. package/dist/type-icons.js +9 -0
  107. package/dist/types.d.ts +29 -0
  108. package/dist/utils.d.ts +16 -0
  109. package/dist/utils.js +44 -0
  110. package/package.json +70 -68
  111. package/components/Alert.svelte +0 -34
  112. package/components/Alert.svelte.d.ts +0 -21
  113. package/components/Article.svelte +0 -39
  114. package/components/Article.svelte.d.ts +0 -26
  115. package/components/Badge.svelte +0 -16
  116. package/components/Badge.svelte.d.ts +0 -20
  117. package/components/Breadcrumb.svelte +0 -17
  118. package/components/Breadcrumb.svelte.d.ts +0 -21
  119. package/components/Button.svelte +0 -41
  120. package/components/Button.svelte.d.ts +0 -30
  121. package/components/Card.svelte +0 -70
  122. package/components/Card.svelte.d.ts +0 -32
  123. package/components/Carousel/Carousel.svelte +0 -128
  124. package/components/Carousel/Carousel.svelte.d.ts +0 -35
  125. package/components/Carousel/CarouselItem.svelte +0 -32
  126. package/components/Carousel/CarouselItem.svelte.d.ts +0 -18
  127. package/components/Carousel/types.d.ts +0 -14
  128. package/components/CloseButton.svelte +0 -23
  129. package/components/CloseButton.svelte.d.ts +0 -19
  130. package/components/Collapsible.svelte +0 -49
  131. package/components/Collapsible.svelte.d.ts +0 -21
  132. package/components/CopyButton.svelte +0 -43
  133. package/components/CopyButton.svelte.d.ts +0 -24
  134. package/components/Form/Checkbox.svelte +0 -37
  135. package/components/Form/Checkbox.svelte.d.ts +0 -26
  136. package/components/Form/Form.svelte +0 -22
  137. package/components/Form/Form.svelte.d.ts +0 -26
  138. package/components/Form/Input.svelte +0 -67
  139. package/components/Form/Input.svelte.d.ts +0 -28
  140. package/components/Form/NumberInput/DecrementButton.svelte +0 -9
  141. package/components/Form/NumberInput/DecrementButton.svelte.d.ts +0 -19
  142. package/components/Form/NumberInput/IncrementButton.svelte +0 -9
  143. package/components/Form/NumberInput/IncrementButton.svelte.d.ts +0 -19
  144. package/components/Form/NumberInput/NumberInput.svelte +0 -129
  145. package/components/Form/NumberInput/NumberInput.svelte.d.ts +0 -36
  146. package/components/Form/Radio.svelte +0 -26
  147. package/components/Form/Radio.svelte.d.ts +0 -25
  148. package/components/Form/Select.svelte +0 -40
  149. package/components/Form/Select.svelte.d.ts +0 -24
  150. package/components/Form/Slider.svelte +0 -124
  151. package/components/Form/Slider.svelte.d.ts +0 -30
  152. package/components/Form/Switch.svelte +0 -71
  153. package/components/Form/index.d.ts +0 -10
  154. package/components/Form/style.scss +0 -4
  155. package/components/Hero.svelte +0 -78
  156. package/components/Hero.svelte.d.ts +0 -26
  157. package/components/Layout/Col.svelte +0 -25
  158. package/components/Layout/Col.svelte.d.ts +0 -27
  159. package/components/Layout/Row.svelte +0 -24
  160. package/components/Layout/Row.svelte.d.ts +0 -26
  161. package/components/Layout/index.d.ts +0 -2
  162. package/components/Layout/index.js +0 -2
  163. package/components/Modal/Modal.svelte +0 -62
  164. package/components/Modal/Modal.svelte.d.ts +0 -28
  165. package/components/Modal/index.d.ts +0 -13
  166. package/components/Modal/index.js +0 -17
  167. package/components/Navbar.svelte +0 -40
  168. package/components/Navbar.svelte.d.ts +0 -22
  169. package/components/Pagination/Arrow.svelte +0 -17
  170. package/components/Pagination/Arrow.svelte.d.ts +0 -19
  171. package/components/Pagination/NavigationButton.svelte +0 -23
  172. package/components/Pagination/NavigationButton.svelte.d.ts +0 -23
  173. package/components/Pagination/Pagination.svelte +0 -137
  174. package/components/Pagination/Pagination.svelte.d.ts +0 -36
  175. package/components/Popover.svelte +0 -62
  176. package/components/Popover.svelte.d.ts +0 -25
  177. package/components/Progress.svelte +0 -39
  178. package/components/Progress.svelte.d.ts +0 -25
  179. package/components/Skeleton.svelte +0 -55
  180. package/components/Skeleton.svelte.d.ts +0 -22
  181. package/components/Table.svelte +0 -73
  182. package/components/Table.svelte.d.ts +0 -24
  183. package/components/Tabs/Tab.svelte +0 -52
  184. package/components/Tabs/Tab.svelte.d.ts +0 -20
  185. package/components/Tabs/Tabs.svelte +0 -90
  186. package/components/Tabs/Tabs.svelte.d.ts +0 -25
  187. package/components/Toast/Toast.svelte +0 -91
  188. package/components/Toast/Toast.svelte.d.ts +0 -26
  189. package/components/Toast/ToastContainer.svelte +0 -37
  190. package/components/Toast/ToastContainer.svelte.d.ts +0 -18
  191. package/components/Toast/index.js +0 -37
  192. package/index.d.ts +0 -23
  193. package/types.d.ts +0 -16
  194. package/utils.d.ts +0 -16
  195. package/utils.js +0 -34
  196. /package/{components → dist/components}/Carousel/index.js +0 -0
  197. /package/{components → dist/components}/Carousel/types.js +0 -0
  198. /package/{components → dist/components}/Form/NumberInput/index.d.ts +0 -0
  199. /package/{components → dist/components}/Form/NumberInput/index.js +0 -0
  200. /package/{components → dist/components}/Pagination/arrow-dimension.d.ts +0 -0
  201. /package/{components → dist/components}/Pagination/index.js +0 -0
  202. /package/{components → dist/components}/Tabs/index.d.ts +0 -0
  203. /package/{components → dist/components}/Tabs/index.js +0 -0
  204. /package/{components → dist/components}/Tabs/utils.js +0 -0
  205. /package/{components → dist/components}/style.scss +0 -0
  206. /package/{types.js → dist/types.js} +0 -0
@@ -0,0 +1,100 @@
1
+ import Toast from './Toast.svelte';
2
+ import ToastContainer, { containerClass } from './ToastContainer.svelte';
3
+ import { mount, unmount } from 'svelte';
4
+ const instances = new Map();
5
+ const cleanups = new Map();
6
+ function containerSelector(position) {
7
+ return `.${containerClass}.${position}`;
8
+ }
9
+ function ensureContainer(position) {
10
+ const existing = document.querySelector(containerSelector(position));
11
+ if (existing instanceof HTMLElement)
12
+ return existing;
13
+ mount(ToastContainer, {
14
+ target: document.body,
15
+ props: { position },
16
+ });
17
+ const created = document.querySelector(containerSelector(position));
18
+ if (!(created instanceof HTMLElement)) {
19
+ throw new Error(`Missing toast container for ${position}`);
20
+ }
21
+ return created;
22
+ }
23
+ function removeContainerIfEmpty(position) {
24
+ const el = document.querySelector(containerSelector(position));
25
+ if (el && el.children.length === 0)
26
+ el.remove();
27
+ }
28
+ export function open(props) {
29
+ if (typeof props === 'string')
30
+ props = { message: props };
31
+ const position = props.position ?? 'top';
32
+ const userOnClose = props.onClose;
33
+ const target = ensureContainer(position);
34
+ const anchor = target.firstChild;
35
+ let settled = false;
36
+ function finish() {
37
+ if (settled)
38
+ return;
39
+ settled = true;
40
+ cleanups.delete(instance);
41
+ unmount(instance);
42
+ removeContainerIfEmpty(position);
43
+ }
44
+ const instance = mount(Toast, {
45
+ target,
46
+ anchor: anchor ?? undefined,
47
+ props: {
48
+ ...props,
49
+ position,
50
+ onClose: () => {
51
+ instances.delete(instance);
52
+ userOnClose?.();
53
+ // Outro is 300ms; unmount after it so the fade is not cancelled
54
+ setTimeout(finish, 350);
55
+ },
56
+ },
57
+ intro: true,
58
+ });
59
+ cleanups.set(instance, finish);
60
+ instances.set(instance, position);
61
+ }
62
+ function openType(type) {
63
+ return (options) => {
64
+ const props = {
65
+ type,
66
+ message: '',
67
+ };
68
+ if (typeof options === 'string')
69
+ props.message = options;
70
+ else
71
+ Object.assign(props, options);
72
+ open(props);
73
+ };
74
+ }
75
+ /** Dismiss active toasts immediately (optionally only one position lane). */
76
+ export function clear(position) {
77
+ for (const [instance, pos] of instances) {
78
+ if (position && pos !== position)
79
+ continue;
80
+ instances.delete(instance);
81
+ cleanups.get(instance)?.();
82
+ }
83
+ }
84
+ export const info = openType('secondary');
85
+ export const success = openType('success');
86
+ export const warning = openType('warning');
87
+ export const warn = warning;
88
+ export const danger = openType('danger');
89
+ export const error = danger;
90
+ Object.assign(Toast, {
91
+ open,
92
+ info,
93
+ success,
94
+ warning,
95
+ warn,
96
+ error,
97
+ danger,
98
+ clear,
99
+ });
100
+ export default Toast;
@@ -0,0 +1,3 @@
1
+ /** Re-export sketchyicons (component + icon data) for spaper consumers. */
2
+ export * from '@sketchyicons/svelte';
3
+ export type { IconNode, IconNodeAttributes, SketchyIconProps, } from '@sketchyicons/svelte';
package/dist/icons.js ADDED
@@ -0,0 +1,2 @@
1
+ /** Re-export sketchyicons (component + icon data) for spaper consumers. */
2
+ export * from '@sketchyicons/svelte';
@@ -0,0 +1,31 @@
1
+ import Button from './components/Button.svelte';
2
+ import Alert from './components/Alert.svelte';
3
+ import Tag from './components/Tag.svelte';
4
+ import Breadcrumb from './components/Breadcrumb.svelte';
5
+ import Navbar from './components/Navbar.svelte';
6
+ import Modal from './components/Modal';
7
+ import { Tabs, Tab } from './components/Tabs';
8
+ import { Input, Select, Radio, Checkbox, Switch, Slider, NumberInput } from './components/Form';
9
+ import Article from './components/Article.svelte';
10
+ import Card from './components/Card.svelte';
11
+ import Collapsible from './components/Collapsible.svelte';
12
+ import Divider from './components/Divider.svelte';
13
+ import Popover from './components/Popover.svelte';
14
+ import Progress from './components/Progress.svelte';
15
+ import { Table, TableColumn } from './components/Table';
16
+ import Pagination from './components/Pagination';
17
+ import Toast from './components/Toast';
18
+ import CloseButton from './components/CloseButton.svelte';
19
+ import CopyButton from './components/CopyButton.svelte';
20
+ import Skeleton from './components/Skeleton.svelte';
21
+ import Spinner from './components/Spinner.svelte';
22
+ import { Avatar, AvatarGroup } from './components/Avatar';
23
+ import { Carousel, CarouselItem } from './components/Carousel';
24
+ import Hero from './components/Hero.svelte';
25
+ import Icon from './components/Icon.svelte';
26
+ import ScrollTop from './components/ScrollTop.svelte';
27
+ export { Button, Alert, Tag, Icon, Breadcrumb, Navbar, Modal, Tabs, Tab, Input, Select, Radio, Checkbox, Switch, Slider, Article, Card, Collapsible, Divider, Popover, Progress, Table, TableColumn, Pagination, Toast, CloseButton, CopyButton, Skeleton, Spinner, Avatar, AvatarGroup, Carousel, CarouselItem, Hero, NumberInput, ScrollTop, };
28
+ export type { IconNode } from './icons';
29
+ export type { StringOrSnippet, HeadingLevel, PaperColor, TableSort, } from './types';
30
+ export type { CarouselControls } from './components/Carousel';
31
+ export { isSnippet } from './utils';
@@ -1,23 +1,28 @@
1
1
  import Button from './components/Button.svelte';
2
2
  import Alert from './components/Alert.svelte';
3
- import Badge from './components/Badge.svelte';
3
+ import Tag from './components/Tag.svelte';
4
4
  import Breadcrumb from './components/Breadcrumb.svelte';
5
5
  import Navbar from './components/Navbar.svelte';
6
6
  import Modal from './components/Modal';
7
7
  import { Tabs, Tab } from './components/Tabs';
8
- import { Input, Select, Radio, Checkbox, Switch, Slider, Form, NumberInput, } from './components/Form';
8
+ import { Input, Select, Radio, Checkbox, Switch, Slider, NumberInput, } from './components/Form';
9
9
  import Article from './components/Article.svelte';
10
10
  import Card from './components/Card.svelte';
11
11
  import Collapsible from './components/Collapsible.svelte';
12
+ import Divider from './components/Divider.svelte';
12
13
  import Popover from './components/Popover.svelte';
13
14
  import Progress from './components/Progress.svelte';
14
- import Table from './components/Table.svelte';
15
+ import { Table, TableColumn } from './components/Table';
15
16
  import Pagination from './components/Pagination';
16
17
  import Toast from './components/Toast';
17
18
  import CloseButton from './components/CloseButton.svelte';
18
19
  import CopyButton from './components/CopyButton.svelte';
19
20
  import Skeleton from './components/Skeleton.svelte';
21
+ import Spinner from './components/Spinner.svelte';
22
+ import { Avatar, AvatarGroup } from './components/Avatar';
20
23
  import { Carousel, CarouselItem } from './components/Carousel';
21
24
  import Hero from './components/Hero.svelte';
22
- import { Col, Row } from './components/Layout';
23
- export { Button, Alert, Badge, Breadcrumb, Navbar, Modal, Tabs, Tab, Form, Input, Select, Radio, Checkbox, Switch, Slider, Article, Card, Collapsible, Popover, Progress, Table, Pagination, Toast, CloseButton, CopyButton, Skeleton, Carousel, CarouselItem, Hero, Col, Row, NumberInput, };
25
+ import Icon from './components/Icon.svelte';
26
+ import ScrollTop from './components/ScrollTop.svelte';
27
+ export { Button, Alert, Tag, Icon, Breadcrumb, Navbar, Modal, Tabs, Tab, Input, Select, Radio, Checkbox, Switch, Slider, Article, Card, Collapsible, Divider, Popover, Progress, Table, TableColumn, Pagination, Toast, CloseButton, CopyButton, Skeleton, Spinner, Avatar, AvatarGroup, Carousel, CarouselItem, Hero, NumberInput, ScrollTop, };
28
+ export { isSnippet } from './utils';
@@ -0,0 +1,4 @@
1
+ import type { PaperType } from './types';
2
+ import { type IconNode } from './icons';
3
+ /** Icon shown for a paper type. Info covers primary and secondary. */
4
+ export declare const typeIcons: Record<PaperType, IconNode>;
@@ -0,0 +1,9 @@
1
+ import { Check, CircleX, Info, TriangleAlert } from './icons';
2
+ /** Icon shown for a paper type. Info covers primary and secondary. */
3
+ export const typeIcons = {
4
+ success: Check,
5
+ warning: TriangleAlert,
6
+ danger: CircleX,
7
+ primary: Info,
8
+ secondary: Info,
9
+ };
@@ -0,0 +1,29 @@
1
+ import type { Snippet } from 'svelte';
2
+ export type PaperSize = 'small' | 'default' | 'large';
3
+ export type PaperType = 'primary' | 'secondary' | 'success' | 'warning' | 'danger';
4
+ export type PaperColor = PaperType | 'muted';
5
+ export type PaperFlexPlacement = 'spaces' | 'edges' | 'right' | 'center' | 'left';
6
+ export type PaperAlign = 'left' | 'center' | 'right';
7
+ export type Attributes = Record<string, string | boolean>;
8
+ export type PositionY = 'top' | 'bottom';
9
+ export type PositionX = 'left' | 'right';
10
+ export type Position = PositionX | PositionY;
11
+ export type HeadingLevel = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
12
+ export type StringOrSnippet = string | Snippet;
13
+ export interface TableColumnObj {
14
+ field: string;
15
+ label?: string;
16
+ /** Overrides the table `sortable` prop for this column. */
17
+ sortable?: boolean;
18
+ /** @deprecated Use `<TableColumn>` to render the cell. */
19
+ content?: (val?: any) => string;
20
+ /** @deprecated Use `<TableColumn>` to render the cell. */
21
+ html?: boolean;
22
+ }
23
+ export type TableColumn = TableColumnObj | string;
24
+ /** `order` is `1` for ascending and `-1` for descending. */
25
+ export interface TableSort {
26
+ field: string;
27
+ order: 1 | -1;
28
+ }
29
+ export type Transition = 'blur' | 'fade' | 'fly' | 'slide' | 'scale' | 'draw' | 'crossfade';
@@ -0,0 +1,16 @@
1
+ import * as transition from 'svelte/transition';
2
+ import type { Snippet } from 'svelte';
3
+ import type { Attributes, StringOrSnippet } from './types';
4
+ interface getDomAttributesParams {
5
+ props: Attributes;
6
+ classes: string;
7
+ toOmit?: string[];
8
+ }
9
+ export declare function computeClasses(elPrefix: string, props: Record<string, any>): string;
10
+ export declare function getDomAttributes({ props, classes, toOmit, }: getDomAttributesParams): Attributes;
11
+ export type { ComponentProps } from 'svelte';
12
+ export declare function isSnippet(value: StringOrSnippet): value is Snippet;
13
+ export declare function configureTransition(node: Element, { name, disabled, }: {
14
+ name?: keyof typeof transition | null;
15
+ disabled?: boolean;
16
+ }): any;
package/dist/utils.js ADDED
@@ -0,0 +1,44 @@
1
+ import * as transition from 'svelte/transition';
2
+ const sizeAlias = {
3
+ small: 'sm',
4
+ large: 'lg',
5
+ };
6
+ const propToClass = {
7
+ size: (pf, val) => {
8
+ if (!val || val === 'default')
9
+ return '';
10
+ const mapped = sizeAlias[val] ?? val;
11
+ return `${pf}-${mapped}`;
12
+ },
13
+ block: (pf, _val) => `${pf}-block`,
14
+ type: (pf, val) => `${pf}-${val}`,
15
+ outline: (pf, val) => `${pf}-${val}-outline`,
16
+ };
17
+ function omit(obj, properties) {
18
+ return Object.fromEntries(Object.entries(obj).filter(([key, _val]) => !properties.includes(key)));
19
+ }
20
+ export function computeClasses(elPrefix, props) {
21
+ return Object.entries(props)
22
+ .filter(([_prop, val]) => val)
23
+ .map(([prop, val]) => propToClass[prop](elPrefix, val))
24
+ .filter(Boolean)
25
+ .join(' ');
26
+ }
27
+ export function getDomAttributes({ props, classes, toOmit = [], }) {
28
+ return {
29
+ ...omit(props, toOmit),
30
+ class: classes,
31
+ };
32
+ }
33
+ export function isSnippet(value) {
34
+ return typeof value === 'function';
35
+ }
36
+ export function configureTransition(node, { name, disabled, }) {
37
+ if (disabled ||
38
+ !name ||
39
+ window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
40
+ return { duration: 0 };
41
+ }
42
+ // crossfade returns a tuple; other transitions return TransitionConfig
43
+ return transition[name](node);
44
+ }
package/package.json CHANGED
@@ -1,81 +1,83 @@
1
1
  {
2
2
  "name": "spaper",
3
- "description": "PaperCSS components for Svelte",
4
- "license": "MIT",
3
+ "version": "2.0.0",
4
+ "description": "PapierCSS components for Svelte",
5
5
  "keywords": [
6
+ "components",
7
+ "papercss",
8
+ "papiercss",
6
9
  "svelte",
7
10
  "sveltejs",
8
- "papercss",
9
- "components"
11
+ "tailwind"
10
12
  ],
11
- "version": "1.4.0",
12
- "repository": {
13
- "type": "git",
14
- "url": "git+https://github.com/Oli8/spaper.git"
15
- },
13
+ "homepage": "https://github.com/Oli8/spaper#readme",
16
14
  "bugs": {
17
15
  "url": "https://github.com/Oli8/spaper/issues"
18
16
  },
19
- "homepage": "https://github.com/Oli8/spaper#readme",
20
- "peerDependencies": {
21
- "papercss": "^1.9.2"
17
+ "license": "MIT",
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "git+https://github.com/Oli8/spaper.git"
22
21
  },
22
+ "files": [
23
+ "dist",
24
+ "!dist/**/*.test.*",
25
+ "!dist/**/*.spec.*"
26
+ ],
23
27
  "type": "module",
28
+ "sideEffects": [
29
+ "**/*.css"
30
+ ],
31
+ "svelte": "./dist/index.js",
32
+ "imports": {
33
+ "#lib": "./src/lib/index.js",
34
+ "#lib/*": "./src/lib/*",
35
+ "#docs/*": "./src/docs/*"
36
+ },
24
37
  "exports": {
25
- "./package.json": "./package.json",
26
- "./components/Alert.svelte": "./components/Alert.svelte",
27
- "./components/Article.svelte": "./components/Article.svelte",
28
- "./components/Badge.svelte": "./components/Badge.svelte",
29
- "./components/Breadcrumb.svelte": "./components/Breadcrumb.svelte",
30
- "./components/Button.svelte": "./components/Button.svelte",
31
- "./components/Card.svelte": "./components/Card.svelte",
32
- "./components/Carousel/Carousel.svelte": "./components/Carousel/Carousel.svelte",
33
- "./components/Carousel/CarouselItem.svelte": "./components/Carousel/CarouselItem.svelte",
34
- "./components/Carousel": "./components/Carousel/index.js",
35
- "./components/Carousel/types": "./components/Carousel/types.js",
36
- "./components/CloseButton.svelte": "./components/CloseButton.svelte",
37
- "./components/Collapsible.svelte": "./components/Collapsible.svelte",
38
- "./components/CopyButton.svelte": "./components/CopyButton.svelte",
39
- "./components/Form/Checkbox.svelte": "./components/Form/Checkbox.svelte",
40
- "./components/Form/Form.svelte": "./components/Form/Form.svelte",
41
- "./components/Form/Input.svelte": "./components/Form/Input.svelte",
42
- "./components/Form/NumberInput/DecrementButton.svelte": "./components/Form/NumberInput/DecrementButton.svelte",
43
- "./components/Form/NumberInput/IncrementButton.svelte": "./components/Form/NumberInput/IncrementButton.svelte",
44
- "./components/Form/NumberInput/NumberInput.svelte": "./components/Form/NumberInput/NumberInput.svelte",
45
- "./components/Form/NumberInput": "./components/Form/NumberInput/index.js",
46
- "./components/Form/Radio.svelte": "./components/Form/Radio.svelte",
47
- "./components/Form/Select.svelte": "./components/Form/Select.svelte",
48
- "./components/Form/Slider.svelte": "./components/Form/Slider.svelte",
49
- "./components/Form/Switch.svelte": "./components/Form/Switch.svelte",
50
- "./components/Form": "./components/Form/index.js",
51
- "./components/Form/style.scss": "./components/Form/style.scss",
52
- "./components/Hero.svelte": "./components/Hero.svelte",
53
- "./components/Layout/Col.svelte": "./components/Layout/Col.svelte",
54
- "./components/Layout/Row.svelte": "./components/Layout/Row.svelte",
55
- "./components/Layout": "./components/Layout/index.js",
56
- "./components/Modal/Modal.svelte": "./components/Modal/Modal.svelte",
57
- "./components/Modal": "./components/Modal/index.js",
58
- "./components/Navbar.svelte": "./components/Navbar.svelte",
59
- "./components/Pagination/Arrow.svelte": "./components/Pagination/Arrow.svelte",
60
- "./components/Pagination/NavigationButton.svelte": "./components/Pagination/NavigationButton.svelte",
61
- "./components/Pagination/Pagination.svelte": "./components/Pagination/Pagination.svelte",
62
- "./components/Pagination/arrow-dimension": "./components/Pagination/arrow-dimension.js",
63
- "./components/Pagination": "./components/Pagination/index.js",
64
- "./components/Popover.svelte": "./components/Popover.svelte",
65
- "./components/Progress.svelte": "./components/Progress.svelte",
66
- "./components/Skeleton.svelte": "./components/Skeleton.svelte",
67
- "./components/Table.svelte": "./components/Table.svelte",
68
- "./components/Tabs/Tab.svelte": "./components/Tabs/Tab.svelte",
69
- "./components/Tabs/Tabs.svelte": "./components/Tabs/Tabs.svelte",
70
- "./components/Tabs": "./components/Tabs/index.js",
71
- "./components/Tabs/utils": "./components/Tabs/utils.js",
72
- "./components/Toast/Toast.svelte": "./components/Toast/Toast.svelte",
73
- "./components/Toast/ToastContainer.svelte": "./components/Toast/ToastContainer.svelte",
74
- "./components/Toast": "./components/Toast/index.js",
75
- "./components/style.scss": "./components/style.scss",
76
- ".": "./index.js",
77
- "./types": "./types.js",
78
- "./utils": "./utils.js"
38
+ ".": {
39
+ "types": "./dist/index.d.ts",
40
+ "svelte": "./dist/index.js"
41
+ },
42
+ "./icons": {
43
+ "types": "./dist/icons.d.ts",
44
+ "default": "./dist/icons.js"
45
+ }
46
+ },
47
+ "scripts": {
48
+ "dev": "vite dev",
49
+ "build": "vite build && npm run package",
50
+ "preview": "vite preview",
51
+ "package": "svelte-kit sync && svelte-package && publint",
52
+ "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
53
+ "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
54
+ "lint": "oxlint",
55
+ "fmt": "oxfmt",
56
+ "fmt:check": "oxfmt --check"
57
+ },
58
+ "dependencies": {
59
+ "@sketchyicons/svelte": "^0.5.0"
79
60
  },
80
- "svelte": "./index.js"
81
- }
61
+ "devDependencies": {
62
+ "@sveltejs/adapter-static": "^4.0.0",
63
+ "@sveltejs/kit": "^3.0.0",
64
+ "@sveltejs/package": "^3.0.0",
65
+ "@sveltejs/vite-plugin-svelte": "^7.0.0",
66
+ "@tailwindcss/vite": "^4.3.3",
67
+ "oxfmt": "^0.71.0",
68
+ "oxlint": "^1.86.0",
69
+ "papiercss": "^1.0.2",
70
+ "publint": "^0.3.0",
71
+ "shiki": "^4.4.3",
72
+ "svelte": "^5.57.2",
73
+ "svelte-check": "^4.7.5",
74
+ "tailwindcss": "^4.3.3",
75
+ "typescript": "^6.0.0",
76
+ "vite": "^8.0.12"
77
+ },
78
+ "peerDependencies": {
79
+ "papiercss": "^1.0.2",
80
+ "svelte": "^5.20.0",
81
+ "tailwindcss": "^4.0.0"
82
+ }
83
+ }
@@ -1,34 +0,0 @@
1
- <div {...$$restProps}
2
- class={classes}
3
- class:closed class:dismissible
4
- role="alert">
5
- <slot />
6
- {#if dismissible}
7
- <CloseButton on:click={close} />
8
- {/if}
9
- </div>
10
-
11
- <script >var _a;
12
- ;
13
- import CloseButton from './CloseButton.svelte';
14
- import { computeClasses } from '../utils';
15
- export let type = 'primary';
16
- export let dismissible = false;
17
- let closed = false;
18
- function close() {
19
- closed = true;
20
- }
21
- $: classes = `${(_a = $$restProps.class) !== null && _a !== void 0 ? _a : ''} alert ${computeClasses('alert', { type })}`;
22
- </script>
23
-
24
- <style >.alert {
25
- transition: all 0.25s ease-out;
26
- }
27
- .alert.closed {
28
- border-width: 0;
29
- margin: 0;
30
- max-height: 0;
31
- opacity: 0;
32
- padding-bottom: 0;
33
- padding-top: 0;
34
- }</style>
@@ -1,21 +0,0 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- import type { PaperType } from '../types';
3
- declare const __propDef: {
4
- props: {
5
- [x: string]: any;
6
- type?: PaperType;
7
- dismissible?: boolean;
8
- };
9
- events: {
10
- [evt: string]: CustomEvent<any>;
11
- };
12
- slots: {
13
- default: {};
14
- };
15
- };
16
- export declare type AlertProps = typeof __propDef.props;
17
- export declare type AlertEvents = typeof __propDef.events;
18
- export declare type AlertSlots = typeof __propDef.slots;
19
- export default class Alert extends SvelteComponentTyped<AlertProps, AlertEvents, AlertSlots> {
20
- }
21
- export {};
@@ -1,39 +0,0 @@
1
- <article {...$$restProps}
2
- class="{$$restProps.class ?? ''} article padding-small"
3
- class:border>
4
- <h1 class="article-title">
5
- {#if $$slots.title}
6
- <slot name="title" />
7
- {:else}
8
- {title}
9
- {/if}
10
- </h1>
11
- <p class="article-meta">
12
- {#if $$slots.meta}
13
- <slot name="meta" />
14
- {:else}
15
- {meta}
16
- {/if}
17
- </p>
18
- <p class="text-lead">
19
- {#if $$slots.textLead}
20
- <slot name="textLead" />
21
- {:else}
22
- {textLead}
23
- {/if}
24
- </p>
25
-
26
- <p><slot /></p>
27
-
28
- {#if $$slots.footer}
29
- <footer class="row">
30
- <slot name="footer" />
31
- </footer>
32
- {/if}
33
- </article>
34
-
35
- <script >export let title = '';
36
- export let meta = '';
37
- export let textLead = '';
38
- export let border = false;
39
- </script>
@@ -1,26 +0,0 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- [x: string]: any;
5
- title?: string;
6
- meta?: string;
7
- textLead?: string;
8
- border?: boolean;
9
- };
10
- events: {
11
- [evt: string]: CustomEvent<any>;
12
- };
13
- slots: {
14
- title: {};
15
- meta: {};
16
- textLead: {};
17
- default: {};
18
- footer: {};
19
- };
20
- };
21
- export declare type ArticleProps = typeof __propDef.props;
22
- export declare type ArticleEvents = typeof __propDef.events;
23
- export declare type ArticleSlots = typeof __propDef.slots;
24
- export default class Article extends SvelteComponentTyped<ArticleProps, ArticleEvents, ArticleSlots> {
25
- }
26
- export {};
@@ -1,16 +0,0 @@
1
- <span {...$$restProps}
2
- class="{$$restProps.class ?? ''} badge {type}"
3
- class:rounded>
4
- <slot />
5
- </span>
6
-
7
- <script >;
8
- export let type = 'primary';
9
- export let rounded = false;
10
- </script>
11
-
12
- <style>
13
- .badge.rounded {
14
- border-radius: 30%;
15
- }
16
- </style>
@@ -1,20 +0,0 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- [x: string]: any;
5
- type?: any;
6
- rounded?: boolean;
7
- };
8
- events: {
9
- [evt: string]: CustomEvent<any>;
10
- };
11
- slots: {
12
- default: {};
13
- };
14
- };
15
- export declare type BadgeProps = typeof __propDef.props;
16
- export declare type BadgeEvents = typeof __propDef.events;
17
- export declare type BadgeSlots = typeof __propDef.slots;
18
- export default class Badge extends SvelteComponentTyped<BadgeProps, BadgeEvents, BadgeSlots> {
19
- }
20
- export {};
@@ -1,17 +0,0 @@
1
- <ul {...$$restProps}
2
- class="{$$restProps.class ?? ''} breadcrumb"
3
- class:border>
4
- {#each items as { text, href }}
5
- <li>
6
- {#if href}
7
- <a {href}>{text}</a>
8
- {:else}
9
- {text}
10
- {/if}
11
- </li>
12
- {/each}
13
- </ul>
14
-
15
- <script >export let border = false;
16
- export let items = [];
17
- </script>
@@ -1,21 +0,0 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- [x: string]: any;
5
- border?: boolean;
6
- items?: {
7
- text: string;
8
- href?: string;
9
- }[];
10
- };
11
- events: {
12
- [evt: string]: CustomEvent<any>;
13
- };
14
- slots: {};
15
- };
16
- export declare type BreadcrumbProps = typeof __propDef.props;
17
- export declare type BreadcrumbEvents = typeof __propDef.events;
18
- export declare type BreadcrumbSlots = typeof __propDef.slots;
19
- export default class Breadcrumb extends SvelteComponentTyped<BreadcrumbProps, BreadcrumbEvents, BreadcrumbSlots> {
20
- }
21
- export {};