@softwareone/spi-sv5-library 1.14.0 → 1.14.2

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 (207) hide show
  1. package/README.md +221 -91
  2. package/dist/{Accordion → components/accordion}/Accordion.svelte +2 -7
  3. package/dist/{Accordion → components/accordion}/Accordion.svelte.d.ts +2 -2
  4. package/dist/{Announcement → components/announcement}/Announcement.svelte +1 -1
  5. package/dist/{Announcement → components/announcement}/Announcement.svelte.d.ts +1 -1
  6. package/dist/{Avatar → components/avatar}/Avatar.svelte +2 -2
  7. package/dist/{Avatar → components/avatar}/Avatar.svelte.d.ts +2 -2
  8. package/dist/{Button → components/button}/Button.svelte +2 -2
  9. package/dist/{Button → components/button}/Button.svelte.d.ts +2 -2
  10. package/dist/{Card → components/card}/Card.svelte +2 -2
  11. package/dist/{Card → components/card}/Card.svelte.d.ts +2 -2
  12. package/dist/{Chips → components/chips}/Chips.svelte +3 -3
  13. package/dist/components/chips/Chips.svelte.d.ts +8 -0
  14. package/dist/{Confirmation → components/confirmation}/Confirmation.svelte +1 -1
  15. package/dist/{Controls/AttachFile → components/controls/attach-file}/AttachFile.svelte +2 -2
  16. package/dist/{Controls/AttachFile → components/controls/attach-file}/AttachFile.svelte.d.ts +1 -1
  17. package/dist/{Controls/AttachFile → components/controls/attach-file}/Warnings.svelte +2 -2
  18. package/dist/{Controls/AttachFile → components/controls/attach-file}/Warnings.svelte.d.ts +2 -2
  19. package/dist/{Controls/Input → components/controls/input}/Input.svelte +4 -4
  20. package/dist/{Controls/Input → components/controls/input}/Input.svelte.d.ts +3 -3
  21. package/dist/{Controls/Label → components/controls/label}/Label.svelte +2 -2
  22. package/dist/{Controls/Label → components/controls/label}/Label.svelte.d.ts +1 -1
  23. package/dist/{Controls/RadioGroup → components/controls/radio-group}/RadioGroup.svelte +5 -5
  24. package/dist/{Controls/RadioGroup → components/controls/radio-group}/RadioGroup.svelte.d.ts +4 -4
  25. package/dist/{Controls/Select → components/controls/select}/Select.svelte +24 -12
  26. package/dist/{Controls/Select → components/controls/select}/Select.svelte.d.ts +4 -4
  27. package/dist/{Controls/TextArea → components/controls/textarea}/TextArea.svelte +4 -4
  28. package/dist/{Controls/TextArea → components/controls/textarea}/TextArea.svelte.d.ts +3 -3
  29. package/dist/{Controls/Toggle → components/controls/toggle}/Toggle.svelte +4 -4
  30. package/dist/components/controls/toggle/Toggle.svelte.d.ts +10 -0
  31. package/dist/{DeleteConfirmation → components/delete-confirmation}/DeleteConfirmation.svelte +3 -3
  32. package/dist/{DeleteConfirmation → components/delete-confirmation}/DeleteConfirmation.svelte.d.ts +2 -2
  33. package/dist/{ErrorPage → components/error-page}/ErrorPage.svelte +4 -4
  34. package/dist/{ErrorPage → components/error-page}/ErrorPage.svelte.d.ts +2 -2
  35. package/dist/{Footer → components/footer}/Footer.svelte +3 -2
  36. package/dist/{Footer → components/footer}/Footer.svelte.d.ts +2 -2
  37. package/dist/{Form → components/form}/Form.svelte +2 -2
  38. package/dist/components/form/index.d.ts +5 -0
  39. package/dist/components/form/index.js +4 -0
  40. package/dist/{Header → components/header}/Header.svelte +7 -7
  41. package/dist/{Header → components/header}/Header.svelte.d.ts +4 -4
  42. package/dist/{Header → components/header}/HeaderAccount.svelte +1 -1
  43. package/dist/{Header → components/header}/HeaderAccount.svelte.d.ts +1 -1
  44. package/dist/{HighlightPanel → components/highlight-panel}/HighlightPanel.svelte +3 -3
  45. package/dist/{HighlightPanel → components/highlight-panel}/HighlightPanel.svelte.d.ts +3 -3
  46. package/dist/components/highlight-panel/enums.d.ts +12 -0
  47. package/dist/{HighlightPanel/highlightPanelState.svelte.d.ts → components/highlight-panel/types.d.ts} +2 -13
  48. package/dist/{Home → components/home}/Home.svelte +3 -3
  49. package/dist/components/home/Home.svelte.d.ts +8 -0
  50. package/dist/components/index.d.ts +50 -0
  51. package/dist/components/index.js +39 -0
  52. package/dist/{Menu → components/menu}/Menu.svelte +3 -3
  53. package/dist/components/menu/Menu.svelte.d.ts +8 -0
  54. package/dist/{Menu → components/menu}/MenuItem.svelte +4 -4
  55. package/dist/{Menu → components/menu}/MenuItem.svelte.d.ts +3 -3
  56. package/dist/{Menu → components/menu}/Sidebar.svelte +1 -1
  57. package/dist/{Menu → components/menu}/Sidebar.svelte.d.ts +1 -1
  58. package/dist/{Menu/MenuState.svelte.d.ts → components/menu/types.d.ts} +0 -1
  59. package/dist/components/menu/utils.d.ts +2 -0
  60. package/dist/{Modal → components/modal}/Modal.svelte +1 -1
  61. package/dist/{Modal → components/modal}/Modal.svelte.d.ts +1 -1
  62. package/dist/{Modal → components/modal}/ModalContent.svelte +2 -2
  63. package/dist/{Modal → components/modal}/ModalContent.svelte.d.ts +2 -2
  64. package/dist/{Modal → components/modal}/ModalFooter.svelte +2 -2
  65. package/dist/{Modal → components/modal}/ModalFooter.svelte.d.ts +1 -1
  66. package/dist/{Modal → components/modal}/ModalHeader.svelte +1 -1
  67. package/dist/{Modal → components/modal}/ModalHeader.svelte.d.ts +1 -1
  68. package/dist/{Notification → components/notification}/Notification.svelte +10 -1
  69. package/dist/{Notification/notificationState.svelte.d.ts → components/notification/Notification.svelte.d.ts} +4 -2
  70. package/dist/{Processing → components/processing}/Processing.svelte +9 -3
  71. package/dist/components/processing/Processing.svelte.d.ts +9 -0
  72. package/dist/{ProgressPage → components/progress-page}/ProgressPage.svelte +4 -4
  73. package/dist/{ProgressPage → components/progress-page}/ProgressPage.svelte.d.ts +3 -3
  74. package/dist/{ProgressWizard → components/progress-wizard}/ProgressWizard.svelte +3 -3
  75. package/dist/{ProgressWizard → components/progress-wizard}/ProgressWizard.svelte.d.ts +3 -3
  76. package/dist/{ProgressWizard → components/progress-wizard}/context.d.ts +1 -1
  77. package/dist/{ProgressWizard/progressWizardState.svelte.d.ts → components/progress-wizard/types.d.ts} +0 -1
  78. package/dist/components/progress-wizard/utils.d.ts +2 -0
  79. package/dist/{Spinner → components/spinner}/Spinner.svelte +2 -2
  80. package/dist/{Spinner → components/spinner}/Spinner.svelte.d.ts +2 -2
  81. package/dist/{Switcher → components/switcher}/Switcher.svelte +3 -3
  82. package/dist/components/switcher/Switcher.svelte.d.ts +8 -0
  83. package/dist/{Table → components/table}/AdvancedFilter.svelte +2 -2
  84. package/dist/{Table → components/table}/Header.svelte +2 -2
  85. package/dist/{Table → components/table}/Pagination.svelte +1 -1
  86. package/dist/{Table → components/table}/Table.svelte +2 -2
  87. package/dist/{Table → components/table}/adapter/index.d.ts +1 -1
  88. package/dist/{Table → components/table}/adapter/index.js +1 -1
  89. package/dist/{Table → components/table}/index.d.ts +6 -5
  90. package/dist/{Table → components/table}/index.js +4 -4
  91. package/dist/{Tabs → components/tabs}/Tabs.svelte +3 -3
  92. package/dist/{Tabs → components/tabs}/Tabs.svelte.d.ts +3 -3
  93. package/dist/{Toast → components/toast}/Toast.svelte +3 -3
  94. package/dist/components/toast/Toast.svelte.d.ts +6 -0
  95. package/dist/components/toast/state.svelte.d.ts +11 -0
  96. package/dist/components/toast/types.d.ts +7 -0
  97. package/dist/components/toast/types.js +1 -0
  98. package/dist/{Tooltip → components/tooltip}/Tooltip.svelte +2 -2
  99. package/dist/{Tooltip → components/tooltip}/Tooltip.svelte.d.ts +2 -2
  100. package/dist/{Waffle → components/waffle}/Waffle.svelte +2 -1
  101. package/dist/{Waffle → components/waffle}/Waffle.svelte.d.ts +1 -1
  102. package/dist/components/waffle/types.js +1 -0
  103. package/dist/index.d.ts +1 -61
  104. package/dist/index.js +1 -55
  105. package/package.json +5 -5
  106. package/dist/Breadcrumbs/Breadcrumbs.svelte +0 -78
  107. package/dist/Breadcrumbs/Breadcrumbs.svelte.d.ts +0 -18
  108. package/dist/Breadcrumbs/breadcrumbsState.svelte.d.ts +0 -8
  109. package/dist/Breadcrumbs/breadcrumbsState.svelte.js +0 -24
  110. package/dist/Chips/Chips.svelte.d.ts +0 -8
  111. package/dist/Controls/Toggle/Toggle.svelte.d.ts +0 -10
  112. package/dist/Form/index.d.ts +0 -6
  113. package/dist/Form/index.js +0 -11
  114. package/dist/Home/Home.svelte.d.ts +0 -8
  115. package/dist/Menu/Menu.svelte.d.ts +0 -8
  116. package/dist/Notification/Notification.svelte.d.ts +0 -4
  117. package/dist/Processing/Processing.svelte.d.ts +0 -4
  118. package/dist/Processing/processingState.svelte.d.ts +0 -6
  119. package/dist/Switcher/Switcher.svelte.d.ts +0 -8
  120. package/dist/Toast/Toast.svelte.d.ts +0 -6
  121. package/dist/Toast/toastState.svelte.d.ts +0 -16
  122. /package/dist/{Announcement/AnnouncementState.svelte.d.ts → components/announcement/types.d.ts} +0 -0
  123. /package/dist/{Form → components/announcement}/types.js +0 -0
  124. /package/dist/{Chips/chipsState.svelte.d.ts → components/chips/enums.d.ts} +0 -0
  125. /package/dist/{Chips/chipsState.svelte.js → components/chips/enums.js} +0 -0
  126. /package/dist/{Confirmation → components/confirmation}/Confirmation.svelte.d.ts +0 -0
  127. /package/dist/{Controls/AttachFile → components/controls/attach-file}/FileManager.svelte +0 -0
  128. /package/dist/{Controls/AttachFile → components/controls/attach-file}/FileManager.svelte.d.ts +0 -0
  129. /package/dist/{Controls/Input → components/controls/input}/InputIcon.svelte +0 -0
  130. /package/dist/{Controls/Input → components/controls/input}/InputIcon.svelte.d.ts +0 -0
  131. /package/dist/{Controls/Label/labelState.svelte.d.ts → components/controls/label/types.d.ts} +0 -0
  132. /package/dist/{Announcement/AnnouncementState.svelte.js → components/controls/label/types.js} +0 -0
  133. /package/dist/{Controls/RadioGroup/radioGroupState.svelte.d.ts → components/controls/radio-group/types.d.ts} +0 -0
  134. /package/dist/{Controls/Label/labelState.svelte.js → components/controls/radio-group/types.js} +0 -0
  135. /package/dist/{Controls/Select/selectState.svelte.d.ts → components/controls/select/types.d.ts} +0 -0
  136. /package/dist/{Controls/RadioGroup/radioGroupState.svelte.js → components/controls/select/types.js} +0 -0
  137. /package/dist/{Form → components/form}/Form.svelte.d.ts +0 -0
  138. /package/dist/{Form → components/form}/context.d.ts +0 -0
  139. /package/dist/{Form → components/form}/context.js +0 -0
  140. /package/dist/{Form → components/form}/types.d.ts +0 -0
  141. /package/dist/{Controls/Select/selectState.svelte.js → components/form/types.js} +0 -0
  142. /package/dist/{Form/helper.d.ts → components/form/utils.d.ts} +0 -0
  143. /package/dist/{Form/helper.js → components/form/utils.js} +0 -0
  144. /package/dist/{Form → components/form}/zod-validations.d.ts +0 -0
  145. /package/dist/{Form → components/form}/zod-validations.js +0 -0
  146. /package/dist/{Header → components/header}/HeaderLoader.svelte +0 -0
  147. /package/dist/{Header → components/header}/HeaderLoader.svelte.d.ts +0 -0
  148. /package/dist/{Header → components/header}/HeaderLogo.svelte +0 -0
  149. /package/dist/{Header → components/header}/HeaderLogo.svelte.d.ts +0 -0
  150. /package/dist/{HighlightPanel/highlightPanelState.svelte.js → components/highlight-panel/enums.js} +0 -0
  151. /package/dist/{Modal/modalState.svelte.js → components/highlight-panel/types.js} +0 -0
  152. /package/dist/{Link → components/link}/Link.svelte +0 -0
  153. /package/dist/{Link → components/link}/Link.svelte.d.ts +0 -0
  154. /package/dist/{Notification/notificationState.svelte.js → components/menu/types.js} +0 -0
  155. /package/dist/{Menu/MenuState.svelte.js → components/menu/utils.js} +0 -0
  156. /package/dist/{Modal/modalState.svelte.d.ts → components/modal/types.d.ts} +0 -0
  157. /package/dist/{Processing/processingState.svelte.js → components/modal/types.js} +0 -0
  158. /package/dist/{ProgressWizard → components/progress-wizard}/context.js +0 -0
  159. /package/dist/{Switcher/switcherState.svelte.js → components/progress-wizard/types.js} +0 -0
  160. /package/dist/{ProgressWizard/progressWizardState.svelte.js → components/progress-wizard/utils.js} +0 -0
  161. /package/dist/{Search → components/search}/Search.svelte +0 -0
  162. /package/dist/{Search → components/search}/Search.svelte.d.ts +0 -0
  163. /package/dist/{Switcher/switcherState.svelte.d.ts → components/switcher/types.d.ts} +0 -0
  164. /package/dist/{Waffle/waffleState.svelte.js → components/switcher/types.js} +0 -0
  165. /package/dist/{Table → components/table}/ActionsColumn.svelte +0 -0
  166. /package/dist/{Table → components/table}/ActionsColumn.svelte.d.ts +0 -0
  167. /package/dist/{Table → components/table}/AdvancedFilter.svelte.d.ts +0 -0
  168. /package/dist/{Table → components/table}/Body.svelte +0 -0
  169. /package/dist/{Table → components/table}/Body.svelte.d.ts +0 -0
  170. /package/dist/{Table → components/table}/ColumnVisibilityDropdown.svelte +0 -0
  171. /package/dist/{Table → components/table}/ColumnVisibilityDropdown.svelte.d.ts +0 -0
  172. /package/dist/{Table → components/table}/Footer.svelte +0 -0
  173. /package/dist/{Table → components/table}/Footer.svelte.d.ts +0 -0
  174. /package/dist/{Table → components/table}/Header.svelte.d.ts +0 -0
  175. /package/dist/{Table → components/table}/PageSize.svelte +0 -0
  176. /package/dist/{Table → components/table}/PageSize.svelte.d.ts +0 -0
  177. /package/dist/{Table → components/table}/Pagination.svelte.d.ts +0 -0
  178. /package/dist/{Table → components/table}/RowCheckBox.svelte +0 -0
  179. /package/dist/{Table → components/table}/RowCheckBox.svelte.d.ts +0 -0
  180. /package/dist/{Table → components/table}/Skeleton.svelte +0 -0
  181. /package/dist/{Table → components/table}/Skeleton.svelte.d.ts +0 -0
  182. /package/dist/{Table → components/table}/Table.svelte.d.ts +0 -0
  183. /package/dist/{Table → components/table}/adapter/flex-render.svelte +0 -0
  184. /package/dist/{Table → components/table}/adapter/flex-render.svelte.d.ts +0 -0
  185. /package/dist/{Table → components/table}/adapter/render-component.d.ts +0 -0
  186. /package/dist/{Table → components/table}/adapter/render-component.js +0 -0
  187. /package/dist/{Table → components/table}/adapter/table.svelte.d.ts +0 -0
  188. /package/dist/{Table → components/table}/adapter/table.svelte.js +0 -0
  189. /package/dist/{Table → components/table}/consts.d.ts +0 -0
  190. /package/dist/{Table → components/table}/consts.js +0 -0
  191. /package/dist/{Table → components/table}/context.d.ts +0 -0
  192. /package/dist/{Table → components/table}/context.js +0 -0
  193. /package/dist/{Table → components/table}/excel-setting.d.ts +0 -0
  194. /package/dist/{Table → components/table}/excel-setting.js +0 -0
  195. /package/dist/{Table → components/table}/excel.d.ts +0 -0
  196. /package/dist/{Table → components/table}/excel.js +0 -0
  197. /package/dist/{Table → components/table}/tanstack-types.d.ts +0 -0
  198. /package/dist/{Table → components/table}/types.d.ts +0 -0
  199. /package/dist/{Table → components/table}/types.js +0 -0
  200. /package/dist/{Table/util.d.ts → components/table/utils.d.ts} +0 -0
  201. /package/dist/{Table/util.js → components/table/utils.js} +0 -0
  202. /package/dist/{Tabs/tabsState.svelte.d.ts → components/tabs/types.d.ts} +0 -0
  203. /package/dist/{Tabs/tabsState.svelte.js → components/tabs/types.js} +0 -0
  204. /package/dist/{Toast/toastState.svelte.js → components/toast/state.svelte.js} +0 -0
  205. /package/dist/{Waffle → components/waffle}/WaffleItems.svelte +0 -0
  206. /package/dist/{Waffle → components/waffle}/WaffleItems.svelte.d.ts +0 -0
  207. /package/dist/{Waffle/waffleState.svelte.d.ts → components/waffle/types.d.ts} +0 -0
package/README.md CHANGED
@@ -1,102 +1,232 @@
1
- # SoftwareOne SPI Component Library for Svelte
1
+ # @softwareone/spi-sv5-library
2
2
 
3
- This library provides a set of reusable components to help you build modern web applications with Svelte 5 (Runes) and SvelteKit 2. Each component is designed to be easily customizable and integrate seamlessly with your Svelte projects.
3
+ SoftwareOne's Svelte 5 UI component library a collection of accessible, composable components for building modern web applications with Svelte 5 (runes) and SvelteKit 2.
4
4
 
5
- ## Installation
5
+ [![npm version](https://img.shields.io/npm/v/@softwareone/spi-sv5-library)](https://www.npmjs.com/package/@softwareone/spi-sv5-library)
6
+ [![license](https://img.shields.io/npm/l/@softwareone/spi-sv5-library)](LICENSE)
7
+
8
+ ---
9
+
10
+ ## Requirements
11
+
12
+ - **Svelte** `^5.0.0`
13
+ - **Node** `22+`
6
14
 
7
- To install the library, use the following command:
15
+ ---
16
+
17
+ ## Installation
8
18
 
9
19
  ```bash
10
- npm install @softwareone/swo-spi-svelte5-library
20
+ npm install @softwareone/spi-sv5-library
21
+ ```
22
+
23
+ ### Optional peer dependencies
24
+
25
+ Install only what you use:
26
+
27
+ | Peer dependency | Required for |
28
+ | ------------------------------------------------- | ------------------------------------ |
29
+ | `material-icons` + `material-icons-outlined` | Icon rendering across all components |
30
+ | `sveltekit-superforms` + `zod` | `@softwareone/spi-sv5-library/form` |
31
+ | `@tanstack/table-core` + `exceljs` + `file-saver` | `@softwareone/spi-sv5-library/table` |
32
+
33
+ ---
34
+
35
+ ## Quick start
36
+
37
+ ```svelte
38
+ <script lang="ts">
39
+ import { Button, Modal } from '@softwareone/spi-sv5-library';
40
+
41
+ let showModal = $state(false);
42
+ </script>
43
+
44
+ <Button onclick={() => (showModal = true)}>Open modal</Button>
45
+
46
+ <Modal bind:showModal title="Hello">
47
+ <p>Modal content goes here.</p>
48
+ </Modal>
49
+ ```
50
+
51
+ ---
52
+
53
+ ## Components
54
+
55
+ ### Layout & Navigation
56
+
57
+ | Component | Description |
58
+ | ---------- | ----------------------------------------------------------------------------------- |
59
+ | `Header` | Full application bar with built-in menu, account, loader, waffle, and announcements |
60
+ | `Footer` | Application footer |
61
+ | `Sidebar` | Collapsible navigation sidebar |
62
+ | `Tabs` | Tabbed content navigation |
63
+ | `Switcher` | Segmented option switcher |
64
+
65
+ ### Feedback & Overlays
66
+
67
+ | Component | Description |
68
+ | ------------------------- | ----------------------------------------------- |
69
+ | `Modal` | Dialog overlay with header, content, and footer |
70
+ | `ConfirmationModal` | Pre-built confirmation dialog |
71
+ | `DeleteConfirmationModal` | Pre-built delete confirmation dialog |
72
+ | `Toast` | Toast notification system |
73
+ | `Notification` | Inline alert/notification banner |
74
+ | `Spinner` | Loading spinner |
75
+ | `Processing` | Full-screen processing overlay |
76
+ | `Tooltip` | Hover tooltip |
77
+
78
+ ### Data Display
79
+
80
+ | Component | Description |
81
+ | ---------------- | --------------------------------------------- |
82
+ | `Card` | Content container with optional header/footer |
83
+ | `Accordion` | Collapsible content sections |
84
+ | `HighlightPanel` | Key-value panel with configurable columns |
85
+ | `Chips` | Tag / badge chips |
86
+ | `Avatar` | User avatar — image or initials fallback |
87
+ | `ProgressWizard` | Multi-step wizard with step validation |
88
+ | `ProgressPage` | Linear step-by-step progress page |
89
+
90
+ ### Forms & Controls
91
+
92
+ | Component | Description |
93
+ | ------------ | -------------------------- |
94
+ | `Input` | Text input |
95
+ | `TextArea` | Multi-line text input |
96
+ | `Select` | Dropdown select |
97
+ | `RadioGroup` | Radio button group |
98
+ | `Toggle` | On/off toggle switch |
99
+ | `AttachFile` | File attachment picker |
100
+ | `Label` | Form label |
101
+ | `Search` | Search input with debounce |
102
+
103
+ ### General
104
+
105
+ | Component | Description |
106
+ | ----------- | ----------------------- |
107
+ | `Button` | Action button |
108
+ | `Link` | Styled anchor |
109
+ | `Home` | Application home layout |
110
+ | `ErrorPage` | Error state page |
111
+
112
+ ---
113
+
114
+ ## Sub-packages
115
+
116
+ ### Form components
117
+
118
+ Integrates with [`sveltekit-superforms`](https://superforms.rocks/) and [`zod`](https://zod.dev/).
119
+
120
+ ```ts
121
+ import { ... } from '@softwareone/spi-sv5-library/form';
122
+ ```
123
+
124
+ ### Table component
125
+
126
+ Advanced data table built on [`@tanstack/table-core`](https://tanstack.com/table) with sorting, filtering, pagination, column visibility, and Excel export.
127
+
128
+ ```ts
129
+ import { ... } from '@softwareone/spi-sv5-library/table';
130
+ ```
131
+
132
+ ---
133
+
134
+ ## API reference
135
+
136
+ ### Header
137
+
138
+ ```svelte
139
+ <Header
140
+ title="My App"
141
+ homeUrl="/"
142
+ accountName="Contoso"
143
+ accountDescription="Microsoft Partner"
144
+ userName="John Doe"
145
+ {menuItems}
146
+ {waffleItems}
147
+ {profileMenuItems}
148
+ {announcementItems}
149
+ onreadannouncementitems={() => {}}
150
+ />
151
+ ```
152
+
153
+ ### Button
154
+
155
+ ```svelte
156
+ <Button
157
+ variant="primary" <!-- 'primary' | 'secondary' | 'outline' | 'outline-none' -->
158
+ variantColor="primary" <!-- 'primary' | 'danger' -->
159
+ >
160
+ Label
161
+ </Button>
11
162
  ```
12
163
 
13
- ## Usage
14
-
15
- Import the components you need into your Svelte application:
16
-
17
- ```javascript
18
- import {
19
- Avatar,
20
- Breadcrumbs,
21
- Button,
22
- Card,
23
- Chips,
24
- ErrorPage,
25
- Footer,
26
- Header,
27
- HeaderAccount,
28
- HeaderLoader,
29
- HeaderLogo,
30
- HighlightPanel,
31
- Input,
32
- Menu,
33
- Modal,
34
- ProgressWizard,
35
- Sidebar,
36
- Tabs,
37
- TextArea,
38
- Toaster,
39
- Toggle,
40
- Tooltip
41
- } from '@softwareone/swo-spi-svelte5-library';
164
+ ### Modal
165
+
166
+ ```svelte
167
+ <script lang="ts">
168
+ let showModal = $state(false);
169
+ </script>
170
+
171
+ <Modal
172
+ bind:showModal
173
+ title="Confirm action"
174
+ width="xs" <!-- 'xs' | 'md' | 'lg' | 'xl' -->
175
+ >
176
+ <p>Body content.</p>
177
+
178
+ {#snippet footer()}
179
+ <Button onclick={() => (showModal = false)}>Close</Button>
180
+ {/snippet}
181
+ </Modal>
42
182
  ```
43
183
 
44
- Import the types you need into your Svelte application:
45
-
46
- ```javascript
47
- import {
48
- type BreadcrumbsNameMap,
49
- type HighlightPanelColumn,
50
- type MenuItem,
51
- type ModalProps,
52
- type ProgressWizardStep,
53
- type Tab,
54
- type Toast
55
- } from '@softwareone/swo-spi-svelte5-library';
184
+ ### Tabs
185
+
186
+ ```svelte
187
+ <script lang="ts">
188
+ import type { Tab } from '@softwareone/spi-sv5-library';
189
+ const tabs: Tab[] = [
190
+ { index: 0, label: 'Overview' },
191
+ { index: 1, label: 'Settings' }
192
+ ];
193
+ let active = $state(0);
194
+ </script>
195
+
196
+ <Tabs {tabs} bind:activeTab={active} onchange={(i) => console.log(i)} />
56
197
  ```
57
198
 
58
- # List of components
59
-
60
- - Avatar
61
- - Breadcrumbs
62
- - Button
63
- - Card
64
- - Chips
65
- - ErrorPage
66
- - Footer
67
- - Form
68
- - Input
69
- - TextArea
70
- - Toggle
71
- - Header (including a loader)
72
- - HeaderAccount
73
- - HeaderLoader
74
- - HeaderLogo
75
- - HighlightPanel
76
- - Menu
77
- - Sidebar
78
- - Modal
79
- - ProgressWizard
80
- - Spinner
81
- - Tabs
82
- - Toaster
83
- - Tooltip
84
-
85
- # List of types per component
86
-
87
- - Breadcrumbs
88
- - BreadcrumbsNameMap
89
- - Chips
90
- - ChipType
91
- - HighlightPanel
92
- - ColumnType
93
- - HighlightPanelColumn
94
- - ImageType
95
- - Menu
96
- - MenuItem
97
- - Modal
98
- - ModalProps
99
- - ProgressWizard
100
- - ProgressWizardStep
101
- - Tab
102
- - Toast
199
+ ---
200
+
201
+ ## Exported types
202
+
203
+ ```ts
204
+ import type {
205
+ AnnouncementItem,
206
+ HighlightPanelColumn,
207
+ HomeItem,
208
+ MainMenu,
209
+ MenuItem,
210
+ SubMenuItem,
211
+ ModalProps,
212
+ ProgressWizardStep,
213
+ RadioOption,
214
+ SelectOption,
215
+ SwitcherOption,
216
+ Tab,
217
+ ToastNotification,
218
+ WaffleItem
219
+ } from '@softwareone/spi-sv5-library';
220
+ ```
221
+
222
+ ## Exported enums
223
+
224
+ ```ts
225
+ import { ChipType, ColumnType, ImageType } from '@softwareone/spi-sv5-library';
226
+ ```
227
+
228
+ ---
229
+
230
+ ## License
231
+
232
+ MIT © SoftwareOne
@@ -1,19 +1,14 @@
1
1
  <script lang="ts">
2
2
  import type { Snippet } from 'svelte';
3
3
 
4
- interface AccordionProps {
4
+ interface Props {
5
5
  title: string;
6
6
  disableBorder?: boolean;
7
7
  isOpen?: boolean;
8
8
  children: Snippet;
9
9
  }
10
10
 
11
- let {
12
- title,
13
- disableBorder = false,
14
- isOpen = $bindable(false),
15
- children
16
- }: AccordionProps = $props();
11
+ let { title, disableBorder = false, isOpen = $bindable(false), children }: Props = $props();
17
12
 
18
13
  const toggleAccordion = () => {
19
14
  isOpen = !isOpen;
@@ -1,10 +1,10 @@
1
1
  import type { Snippet } from 'svelte';
2
- interface AccordionProps {
2
+ interface Props {
3
3
  title: string;
4
4
  disableBorder?: boolean;
5
5
  isOpen?: boolean;
6
6
  children: Snippet;
7
7
  }
8
- declare const Accordion: import("svelte").Component<AccordionProps, {}, "isOpen">;
8
+ declare const Accordion: import("svelte").Component<Props, {}, "isOpen">;
9
9
  type Accordion = ReturnType<typeof Accordion>;
10
10
  export default Accordion;
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { fade } from 'svelte/transition';
3
3
 
4
- import type { AnnouncementItem } from './AnnouncementState.svelte.js';
4
+ import type { AnnouncementItem } from './types.js';
5
5
 
6
6
  interface Props {
7
7
  announcementItems?: AnnouncementItem[];
@@ -1,4 +1,4 @@
1
- import type { AnnouncementItem } from './AnnouncementState.svelte.js';
1
+ import type { AnnouncementItem } from './types.js';
2
2
  interface Props {
3
3
  announcementItems?: AnnouncementItem[];
4
4
  showAnnouncement: boolean;
@@ -2,7 +2,7 @@
2
2
  type BackgroundColor = '#472AFF' | '#25282D';
3
3
  type TextColor = '#333840' | '#FFFFFF';
4
4
 
5
- interface AvatarProps {
5
+ interface Props {
6
6
  text: string;
7
7
  backgroundColor?: BackgroundColor;
8
8
  textColor?: TextColor;
@@ -14,7 +14,7 @@
14
14
  backgroundColor = '#25282D',
15
15
  textColor = '#FFFFFF',
16
16
  keepOrder = false
17
- }: AvatarProps = $props();
17
+ }: Props = $props();
18
18
 
19
19
  const avatarSrc = (text: string): string => {
20
20
  const defaultValue = 'SO';
@@ -1,11 +1,11 @@
1
1
  type BackgroundColor = '#472AFF' | '#25282D';
2
2
  type TextColor = '#333840' | '#FFFFFF';
3
- interface AvatarProps {
3
+ interface Props {
4
4
  text: string;
5
5
  backgroundColor?: BackgroundColor;
6
6
  textColor?: TextColor;
7
7
  keepOrder?: boolean;
8
8
  }
9
- declare const Avatar: import("svelte").Component<AvatarProps, {}, "">;
9
+ declare const Avatar: import("svelte").Component<Props, {}, "">;
10
10
  type Avatar = ReturnType<typeof Avatar>;
11
11
  export default Avatar;
@@ -6,7 +6,7 @@
6
6
  type Variant = 'primary' | 'secondary' | 'outline' | 'outline-none';
7
7
  type VariantColor = 'primary' | 'danger';
8
8
 
9
- interface ButtonProps extends HTMLButtonAttributes {
9
+ interface Props extends HTMLButtonAttributes {
10
10
  variant?: Variant;
11
11
  variantColor?: VariantColor;
12
12
  loading?: boolean;
@@ -20,7 +20,7 @@
20
20
  disabled = false,
21
21
  children,
22
22
  ...props
23
- }: ButtonProps = $props();
23
+ }: Props = $props();
24
24
 
25
25
  const clearButtonFocus: Attachment<HTMLButtonElement> = (element: HTMLButtonElement) => {
26
26
  if (loading) element.blur();
@@ -2,12 +2,12 @@ import type { Snippet } from 'svelte';
2
2
  import type { HTMLButtonAttributes } from 'svelte/elements';
3
3
  type Variant = 'primary' | 'secondary' | 'outline' | 'outline-none';
4
4
  type VariantColor = 'primary' | 'danger';
5
- interface ButtonProps extends HTMLButtonAttributes {
5
+ interface Props extends HTMLButtonAttributes {
6
6
  variant?: Variant;
7
7
  variantColor?: VariantColor;
8
8
  loading?: boolean;
9
9
  children: Snippet;
10
10
  }
11
- declare const Button: import("svelte").Component<ButtonProps, {}, "">;
11
+ declare const Button: import("svelte").Component<Props, {}, "">;
12
12
  type Button = ReturnType<typeof Button>;
13
13
  export default Button;
@@ -1,12 +1,12 @@
1
1
  <script lang="ts">
2
2
  import type { Snippet } from 'svelte';
3
3
 
4
- interface CardProps {
4
+ interface Props {
5
5
  children?: Snippet;
6
6
  disablePadding?: boolean;
7
7
  }
8
8
 
9
- let { children, disablePadding = false }: CardProps = $props();
9
+ let { children, disablePadding = false }: Props = $props();
10
10
  </script>
11
11
 
12
12
  <div class={['card', !disablePadding && 'padding']}>
@@ -1,8 +1,8 @@
1
1
  import type { Snippet } from 'svelte';
2
- interface CardProps {
2
+ interface Props {
3
3
  children?: Snippet;
4
4
  disablePadding?: boolean;
5
5
  }
6
- declare const Card: import("svelte").Component<CardProps, {}, "">;
6
+ declare const Card: import("svelte").Component<Props, {}, "">;
7
7
  type Card = ReturnType<typeof Card>;
8
8
  export default Card;
@@ -1,12 +1,12 @@
1
1
  <script lang="ts">
2
- import { ChipType } from './chipsState.svelte.js';
2
+ import { ChipType } from './enums.js';
3
3
 
4
- interface ChipsProps {
4
+ interface Props {
5
5
  type?: ChipType;
6
6
  text?: string;
7
7
  }
8
8
 
9
- let { type = ChipType.Info, text = type.charAt(0).toUpperCase() + type.slice(1) }: ChipsProps =
9
+ let { type = ChipType.Info, text = type.charAt(0).toUpperCase() + type.slice(1) }: Props =
10
10
  $props();
11
11
  </script>
12
12
 
@@ -0,0 +1,8 @@
1
+ import { ChipType } from './enums.js';
2
+ interface Props {
3
+ type?: ChipType;
4
+ text?: string;
5
+ }
6
+ declare const Chips: import("svelte").Component<Props, {}, "">;
7
+ type Chips = ReturnType<typeof Chips>;
8
+ export default Chips;
@@ -1,5 +1,5 @@
1
1
  <script lang="ts">
2
- import { Button, Modal, Spinner, addToast } from '../index.js';
2
+ import { Button, Modal, Spinner, addToast } from '../../index.js';
3
3
 
4
4
  interface Props {
5
5
  title: string;
@@ -1,8 +1,8 @@
1
1
  <script lang="ts">
2
2
  import type { Attachment } from 'svelte/attachments';
3
3
 
4
- import type { LabelProps } from '../Label/labelState.svelte.js';
5
- import { Label, Notification } from '../../index.js';
4
+ import { Label, Notification } from '../../../index.js';
5
+ import type { LabelProps } from '../label/types.js';
6
6
  import FileManager from './FileManager.svelte';
7
7
  import Warnings from './Warnings.svelte';
8
8
 
@@ -1,4 +1,4 @@
1
- import type { LabelProps } from '../Label/labelState.svelte.js';
1
+ import type { LabelProps } from '../label/types.js';
2
2
  interface Props extends LabelProps {
3
3
  accept?: string;
4
4
  multiple?: boolean;
@@ -1,8 +1,8 @@
1
1
  <script lang="ts">
2
- interface WarningProps {
2
+ interface Props {
3
3
  validationMessages: string[];
4
4
  }
5
- let { validationMessages }: WarningProps = $props();
5
+ let { validationMessages }: Props = $props();
6
6
  </script>
7
7
 
8
8
  <details class="container">
@@ -1,6 +1,6 @@
1
- interface WarningProps {
1
+ interface Props {
2
2
  validationMessages: string[];
3
3
  }
4
- declare const Warnings: import("svelte").Component<WarningProps, {}, "">;
4
+ declare const Warnings: import("svelte").Component<Props, {}, "">;
5
5
  type Warnings = ReturnType<typeof Warnings>;
6
6
  export default Warnings;
@@ -1,13 +1,13 @@
1
1
  <script lang="ts">
2
2
  import type { HTMLInputAttributes } from 'svelte/elements';
3
3
 
4
- import Label from '../Label/Label.svelte';
5
- import type { LabelProps } from '../Label/labelState.svelte.js';
4
+ import Label from '../label/Label.svelte';
5
+ import type { LabelProps } from '../label/types.js';
6
6
  import InputIcon from './InputIcon.svelte';
7
7
 
8
8
  type InputType = 'text' | 'password' | 'number' | 'date' | 'money';
9
9
 
10
- interface InputProps extends Omit<HTMLInputAttributes, 'type' | 'value'>, LabelProps {
10
+ interface Props extends Omit<HTMLInputAttributes, 'type' | 'value'>, LabelProps {
11
11
  type?: InputType;
12
12
  value?: string | number | null;
13
13
  error?: string | string[];
@@ -31,7 +31,7 @@
31
31
  disableValidationColor = false,
32
32
  infoTooltip,
33
33
  ...props
34
- }: InputProps = $props();
34
+ }: Props = $props();
35
35
 
36
36
  let isPasswordVisible = $state(false);
37
37
 
@@ -1,7 +1,7 @@
1
1
  import type { HTMLInputAttributes } from 'svelte/elements';
2
- import type { LabelProps } from '../Label/labelState.svelte.js';
2
+ import type { LabelProps } from '../label/types.js';
3
3
  type InputType = 'text' | 'password' | 'number' | 'date' | 'money';
4
- interface InputProps extends Omit<HTMLInputAttributes, 'type' | 'value'>, LabelProps {
4
+ interface Props extends Omit<HTMLInputAttributes, 'type' | 'value'>, LabelProps {
5
5
  type?: InputType;
6
6
  value?: string | number | null;
7
7
  error?: string | string[];
@@ -9,6 +9,6 @@ interface InputProps extends Omit<HTMLInputAttributes, 'type' | 'value'>, LabelP
9
9
  currency?: string;
10
10
  disableValidationColor?: boolean;
11
11
  }
12
- declare const Input: import("svelte").Component<InputProps, {}, "value">;
12
+ declare const Input: import("svelte").Component<Props, {}, "value">;
13
13
  type Input = ReturnType<typeof Input>;
14
14
  export default Input;
@@ -1,6 +1,6 @@
1
1
  <script lang="ts">
2
- import { Tooltip } from '../../index.js';
3
- import type { LabelProps } from './labelState.svelte.js';
2
+ import { Tooltip } from '../../../index.js';
3
+ import type { LabelProps } from './types.js';
4
4
 
5
5
  let { label, id, required, optional, infoTooltip }: LabelProps = $props();
6
6
  </script>
@@ -1,4 +1,4 @@
1
- import type { LabelProps } from './labelState.svelte.js';
1
+ import type { LabelProps } from './types.js';
2
2
  declare const Label: import("svelte").Component<LabelProps, {}, "">;
3
3
  type Label = ReturnType<typeof Label>;
4
4
  export default Label;
@@ -1,9 +1,9 @@
1
1
  <script lang="ts">
2
- import Label from '../Label/Label.svelte';
3
- import type { LabelProps } from '../Label/labelState.svelte.js';
4
- import type { OptionValueType, RadioOption } from './radioGroupState.svelte.js';
2
+ import Label from '../label/Label.svelte';
3
+ import type { LabelProps } from '../label/types.js';
4
+ import type { OptionValueType, RadioOption } from './types.js';
5
5
 
6
- interface RadioGroupProps extends LabelProps {
6
+ interface Props extends LabelProps {
7
7
  options: string[] | RadioOption[];
8
8
  name: string;
9
9
  value?: OptionValueType;
@@ -25,7 +25,7 @@
25
25
  row = false,
26
26
  description,
27
27
  onchange
28
- }: RadioGroupProps = $props();
28
+ }: Props = $props();
29
29
 
30
30
  const isStringArray = (items: string[] | RadioOption[]): items is string[] =>
31
31
  typeof items[0] === 'string';
@@ -1,6 +1,6 @@
1
- import type { LabelProps } from '../Label/labelState.svelte.js';
2
- import type { OptionValueType, RadioOption } from './radioGroupState.svelte.js';
3
- interface RadioGroupProps extends LabelProps {
1
+ import type { LabelProps } from '../label/types.js';
2
+ import type { OptionValueType, RadioOption } from './types.js';
3
+ interface Props extends LabelProps {
4
4
  options: string[] | RadioOption[];
5
5
  name: string;
6
6
  value?: OptionValueType;
@@ -9,6 +9,6 @@ interface RadioGroupProps extends LabelProps {
9
9
  description?: string;
10
10
  onchange?: (value: OptionValueType) => void;
11
11
  }
12
- declare const RadioGroup: import("svelte").Component<RadioGroupProps, {}, "value">;
12
+ declare const RadioGroup: import("svelte").Component<Props, {}, "value">;
13
13
  type RadioGroup = ReturnType<typeof RadioGroup>;
14
14
  export default RadioGroup;