@placeholderco/placeholder-ui 1.0.12 → 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 (276) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +134 -130
  3. package/dist/app.css +178 -0
  4. package/dist/bootstrap.min.css +3600 -0
  5. package/dist/cards/GitCard.svelte +115 -0
  6. package/dist/cards/GitCard.svelte.d.ts +22 -0
  7. package/dist/display/Avatar.svelte +29 -17
  8. package/dist/display/Avatar.svelte.d.ts +12 -2
  9. package/dist/display/LinkCollection.svelte +40 -18
  10. package/dist/display/LinkCollection.svelte.d.ts +9 -2
  11. package/dist/display/Paper.svelte +31 -19
  12. package/dist/display/Paper.svelte.d.ts +12 -3
  13. package/dist/display/alert/Alert.svelte +129 -0
  14. package/dist/display/alert/Alert.svelte.d.ts +15 -0
  15. package/dist/display/alert/AlertVariant.d.ts +1 -0
  16. package/dist/display/alert/AlertVariant.js +1 -0
  17. package/dist/display/filetree/FileTree.svelte +259 -0
  18. package/dist/display/filetree/FileTree.svelte.d.ts +76 -0
  19. package/dist/display/filetree/FileTreeItem.svelte +396 -0
  20. package/dist/display/filetree/FileTreeItem.svelte.d.ts +40 -0
  21. package/dist/display/filetree/FileTreeNode.d.ts +46 -0
  22. package/dist/display/filetree/FileTreeNode.js +115 -0
  23. package/dist/display/filetree/index.d.ts +5 -0
  24. package/dist/display/filetree/index.js +3 -0
  25. package/dist/editors/CodeMirror.svelte +306 -0
  26. package/dist/editors/CodeMirror.svelte.d.ts +31 -0
  27. package/dist/editors/tiptap/LinkActionMenu.svelte +307 -0
  28. package/dist/editors/tiptap/LinkActionMenu.svelte.d.ts +8 -0
  29. package/dist/editors/tiptap/TipTap.svelte +856 -0
  30. package/dist/editors/tiptap/TipTap.svelte.d.ts +54 -0
  31. package/dist/editors/tiptap/TipTapBubble.svelte +790 -0
  32. package/dist/editors/tiptap/TipTapBubble.svelte.d.ts +44 -0
  33. package/dist/editors/tiptap/collaboration.d.ts +55 -0
  34. package/dist/editors/tiptap/collaboration.js +1 -0
  35. package/dist/editors/tiptap/extensions/Alert.d.ts +18 -0
  36. package/dist/editors/tiptap/extensions/Alert.js +72 -0
  37. package/dist/editors/tiptap/extensions/CodeBlockEditor.d.ts +21 -0
  38. package/dist/editors/tiptap/extensions/CodeBlockEditor.js +326 -0
  39. package/dist/editors/tiptap/extensions/Div.d.ts +19 -0
  40. package/dist/editors/tiptap/extensions/Div.js +89 -0
  41. package/dist/editors/tiptap/extensions/Span.d.ts +5 -0
  42. package/dist/editors/tiptap/extensions/Span.js +56 -0
  43. package/dist/editors/tiptap/extensions/codeBlockEditor.css +236 -0
  44. package/dist/editors/tiptap/extensions/codeBlockLanguages.d.ts +17 -0
  45. package/dist/editors/tiptap/extensions/codeBlockLanguages.js +124 -0
  46. package/dist/editors/tiptap/extensions/index.d.ts +7 -0
  47. package/dist/editors/tiptap/extensions/index.js +5 -0
  48. package/dist/editors/tiptap/toolbar/AlertButton.svelte +261 -0
  49. package/dist/editors/tiptap/toolbar/AlertButton.svelte.d.ts +7 -0
  50. package/dist/editors/tiptap/toolbar/AlignCenterButton.svelte +18 -0
  51. package/dist/editors/tiptap/toolbar/AlignCenterButton.svelte.d.ts +7 -0
  52. package/dist/editors/tiptap/toolbar/AlignJustifyButton.svelte +18 -0
  53. package/dist/editors/tiptap/toolbar/AlignJustifyButton.svelte.d.ts +7 -0
  54. package/dist/editors/tiptap/toolbar/AlignLeftButton.svelte +18 -0
  55. package/dist/editors/tiptap/toolbar/AlignLeftButton.svelte.d.ts +7 -0
  56. package/dist/editors/tiptap/toolbar/AlignRightButton.svelte +18 -0
  57. package/dist/editors/tiptap/toolbar/AlignRightButton.svelte.d.ts +7 -0
  58. package/dist/editors/tiptap/toolbar/BoldButton.svelte +18 -0
  59. package/dist/editors/tiptap/toolbar/BoldButton.svelte.d.ts +7 -0
  60. package/dist/editors/tiptap/toolbar/BulletListButton.svelte +18 -0
  61. package/dist/editors/tiptap/toolbar/BulletListButton.svelte.d.ts +7 -0
  62. package/dist/editors/tiptap/toolbar/CodeBlockButton.svelte +18 -0
  63. package/dist/editors/tiptap/toolbar/CodeBlockButton.svelte.d.ts +7 -0
  64. package/dist/editors/tiptap/toolbar/CodeButton.svelte +18 -0
  65. package/dist/editors/tiptap/toolbar/CodeButton.svelte.d.ts +7 -0
  66. package/dist/editors/tiptap/toolbar/ColorButton.svelte +299 -0
  67. package/dist/editors/tiptap/toolbar/ColorButton.svelte.d.ts +20 -0
  68. package/dist/editors/tiptap/toolbar/DocumentButton.svelte +58 -0
  69. package/dist/editors/tiptap/toolbar/DocumentButton.svelte.d.ts +9 -0
  70. package/dist/editors/tiptap/toolbar/HeadingButton.svelte +30 -0
  71. package/dist/editors/tiptap/toolbar/HeadingButton.svelte.d.ts +8 -0
  72. package/dist/editors/tiptap/toolbar/HtmlButton.svelte +68 -0
  73. package/dist/editors/tiptap/toolbar/HtmlButton.svelte.d.ts +7 -0
  74. package/dist/editors/tiptap/toolbar/ImageButton.svelte +54 -0
  75. package/dist/editors/tiptap/toolbar/ImageButton.svelte.d.ts +8 -0
  76. package/dist/editors/tiptap/toolbar/ItalicButton.svelte +18 -0
  77. package/dist/editors/tiptap/toolbar/ItalicButton.svelte.d.ts +7 -0
  78. package/dist/editors/tiptap/toolbar/LinkButton.svelte +257 -0
  79. package/dist/editors/tiptap/toolbar/LinkButton.svelte.d.ts +7 -0
  80. package/dist/editors/tiptap/toolbar/OrderedListButton.svelte +18 -0
  81. package/dist/editors/tiptap/toolbar/OrderedListButton.svelte.d.ts +7 -0
  82. package/dist/editors/tiptap/toolbar/RedoButton.svelte +18 -0
  83. package/dist/editors/tiptap/toolbar/RedoButton.svelte.d.ts +7 -0
  84. package/dist/editors/tiptap/toolbar/StrikethroughButton.svelte +18 -0
  85. package/dist/editors/tiptap/toolbar/StrikethroughButton.svelte.d.ts +7 -0
  86. package/dist/editors/tiptap/toolbar/SubscriptButton.svelte +18 -0
  87. package/dist/editors/tiptap/toolbar/SubscriptButton.svelte.d.ts +7 -0
  88. package/dist/editors/tiptap/toolbar/SuperscriptButton.svelte +18 -0
  89. package/dist/editors/tiptap/toolbar/SuperscriptButton.svelte.d.ts +7 -0
  90. package/dist/editors/tiptap/toolbar/TableButton.svelte +258 -0
  91. package/dist/editors/tiptap/toolbar/TableButton.svelte.d.ts +7 -0
  92. package/dist/editors/tiptap/toolbar/ToolbarButton.svelte +84 -0
  93. package/dist/editors/tiptap/toolbar/ToolbarButton.svelte.d.ts +10 -0
  94. package/dist/editors/tiptap/toolbar/UnderlineButton.svelte +18 -0
  95. package/dist/editors/tiptap/toolbar/UnderlineButton.svelte.d.ts +7 -0
  96. package/dist/editors/tiptap/toolbar/UndoButton.svelte +18 -0
  97. package/dist/editors/tiptap/toolbar/UndoButton.svelte.d.ts +7 -0
  98. package/dist/form/Autocomplete.svelte +86 -135
  99. package/dist/form/Autocomplete.svelte.d.ts +6 -8
  100. package/dist/form/AutocompleteMulti.svelte +385 -227
  101. package/dist/form/AutocompleteMulti.svelte.d.ts +59 -10
  102. package/dist/form/Checkbox.svelte +59 -54
  103. package/dist/form/Checkbox.svelte.d.ts +14 -5
  104. package/dist/form/Chips.svelte +29 -13
  105. package/dist/form/Chips.svelte.d.ts +16 -2
  106. package/dist/form/ComboBox.svelte +30 -20
  107. package/dist/form/ComboBox.svelte.d.ts +1 -1
  108. package/dist/form/ComboBoxItemBuilder.svelte +161 -188
  109. package/dist/form/ComboBoxItemBuilder.svelte.d.ts +19 -2
  110. package/dist/form/ComboBoxMulti.svelte +38 -24
  111. package/dist/form/ComboBoxMulti.svelte.d.ts +1 -1
  112. package/dist/form/CronBuilder.svelte +84 -67
  113. package/dist/form/CronBuilder.svelte.d.ts +16 -3
  114. package/dist/form/DatePicker.svelte +148 -195
  115. package/dist/form/DateRangePicker.svelte +101 -98
  116. package/dist/form/DateTimePicker.svelte +167 -208
  117. package/dist/form/DateTimePicker.svelte.d.ts +10 -2
  118. package/dist/form/FormGroup.svelte +33 -10
  119. package/dist/form/FormGroup.svelte.d.ts +12 -2
  120. package/dist/form/Number.svelte +70 -47
  121. package/dist/form/Number.svelte.d.ts +36 -6
  122. package/dist/form/Radio.svelte +18 -18
  123. package/dist/form/RadioGroup.svelte +23 -12
  124. package/dist/form/RadioGroup.svelte.d.ts +13 -2
  125. package/dist/form/SegmentedControl.svelte +76 -56
  126. package/dist/form/SegmentedControl.svelte.d.ts +9 -4
  127. package/dist/form/Select.svelte +150 -233
  128. package/dist/form/Select.svelte.d.ts +29 -5
  129. package/dist/form/SelectMulti.svelte +163 -277
  130. package/dist/form/SelectMulti.svelte.d.ts +36 -7
  131. package/dist/form/Slider.svelte +183 -269
  132. package/dist/form/Slider.svelte.d.ts +32 -17
  133. package/dist/form/StringArrayBuilder.svelte +249 -0
  134. package/dist/form/StringArrayBuilder.svelte.d.ts +15 -0
  135. package/dist/form/Switch.svelte +164 -106
  136. package/dist/form/Switch.svelte.d.ts +22 -3
  137. package/dist/form/TextArea.svelte +49 -29
  138. package/dist/form/TextArea.svelte.d.ts +23 -3
  139. package/dist/form/Textbox.svelte +69 -68
  140. package/dist/form/Textbox.svelte.d.ts +32 -4
  141. package/dist/form/TimePicker.svelte +42 -47
  142. package/dist/form/TimePicker.svelte.d.ts +12 -2
  143. package/dist/form/comboBoxCore.svelte.d.ts +99 -0
  144. package/dist/form/comboBoxCore.svelte.js +243 -0
  145. package/dist/icon/Icon.svelte +8 -3
  146. package/dist/icon/Icon.svelte.d.ts +8 -3
  147. package/dist/icon/file-type-bmp.svg +1 -0
  148. package/dist/icon/file-type-csv.svg +1 -0
  149. package/dist/icon/file-type-doc.svg +1 -0
  150. package/dist/icon/file-type-docx.svg +1 -0
  151. package/dist/icon/file-type-jpg.svg +1 -0
  152. package/dist/icon/file-type-pdf.svg +1 -0
  153. package/dist/icon/file-type-png.svg +1 -0
  154. package/dist/icon/file-type-ppt.svg +1 -0
  155. package/dist/icon/file-type-svg.svg +1 -0
  156. package/dist/icon/file-type-txt.svg +1 -0
  157. package/dist/icon/file-type-xls.svg +1 -0
  158. package/dist/icon/file-type-zip.svg +1 -0
  159. package/dist/icon/index.d.ts +166 -151
  160. package/dist/icon/index.js +166 -152
  161. package/dist/icon/logo-placeholder.svg +6 -0
  162. package/dist/icon/source-code.svg +1 -0
  163. package/dist/icon/sun-moon.svg +1 -0
  164. package/dist/icon/table.svg +6 -0
  165. package/dist/index.d.ts +87 -26
  166. package/dist/index.js +25 -28
  167. package/dist/layout/AppShell.svelte +12 -162
  168. package/dist/layout/AppShell.svelte.d.ts +6 -27
  169. package/dist/layout/CustomNavbar.svelte +9 -7
  170. package/dist/layout/CustomNavbar.svelte.d.ts +4 -2
  171. package/dist/layout/Navbar.svelte +161 -129
  172. package/dist/layout/Navbar.svelte.d.ts +29 -15
  173. package/dist/layout/NavbarItemDisplay.svelte +2 -2
  174. package/dist/layout/NavbarItemView.svelte +182 -0
  175. package/dist/layout/NavbarItemView.svelte.d.ts +10 -0
  176. package/dist/layout/Sidenav.svelte +280 -341
  177. package/dist/layout/Sidenav.svelte.d.ts +36 -4
  178. package/dist/models/ComboBoxItem.d.ts +2 -0
  179. package/dist/models/Employee.d.ts +53 -0
  180. package/dist/models/Employee.js +23 -0
  181. package/dist/models/Hyperlink.d.ts +3 -1
  182. package/dist/models/LinkCollectionItem.d.ts +3 -1
  183. package/dist/models/NavbarItem.d.ts +6 -2
  184. package/dist/theme.svelte.d.ts +0 -1
  185. package/dist/theme.svelte.js +46 -58
  186. package/dist/ui/Accordion.svelte +81 -242
  187. package/dist/ui/Accordion.svelte.d.ts +37 -14
  188. package/dist/ui/AccordionItem.svelte +303 -0
  189. package/dist/ui/AccordionItem.svelte.d.ts +21 -0
  190. package/dist/ui/ActionIcon.svelte +25 -21
  191. package/dist/ui/ActionIcon.svelte.d.ts +15 -2
  192. package/dist/ui/Badge.svelte +163 -171
  193. package/dist/ui/Badge.svelte.d.ts +13 -5
  194. package/dist/ui/Button.svelte +178 -205
  195. package/dist/ui/Button.svelte.d.ts +19 -2
  196. package/dist/ui/ButtonVariant.d.ts +15 -1
  197. package/dist/ui/ContextMenu.svelte +146 -0
  198. package/dist/ui/ContextMenu.svelte.d.ts +37 -0
  199. package/dist/ui/ContextMenuList.svelte +188 -0
  200. package/dist/ui/ContextMenuList.svelte.d.ts +12 -0
  201. package/dist/ui/Dialog.svelte +183 -111
  202. package/dist/ui/Dialog.svelte.d.ts +21 -4
  203. package/dist/ui/Drawer.svelte +237 -184
  204. package/dist/ui/Drawer.svelte.d.ts +20 -2
  205. package/dist/ui/Dropdown.svelte +24 -14
  206. package/dist/ui/Dropdown.svelte.d.ts +11 -2
  207. package/dist/ui/Dropzone.svelte +159 -57
  208. package/dist/ui/Dropzone.svelte.d.ts +29 -2
  209. package/dist/ui/Link.svelte +12 -4
  210. package/dist/ui/Link.svelte.d.ts +8 -2
  211. package/dist/ui/Loader.svelte +23 -18
  212. package/dist/ui/Loader.svelte.d.ts +5 -2
  213. package/dist/ui/Logo.svelte +37 -0
  214. package/dist/ui/Logo.svelte.d.ts +16 -0
  215. package/dist/ui/MultiSortable.svelte +287 -0
  216. package/dist/ui/MultiSortable.svelte.d.ts +50 -0
  217. package/dist/ui/Pagination.svelte +15 -9
  218. package/dist/ui/Pagination.svelte.d.ts +6 -2
  219. package/dist/ui/Popover.svelte +43 -65
  220. package/dist/ui/Popover.svelte.d.ts +14 -5
  221. package/dist/ui/ProgressBar.svelte +28 -30
  222. package/dist/ui/ProgressBarVariant.d.ts +7 -1
  223. package/dist/ui/SegmentedControl.svelte +0 -0
  224. package/dist/ui/SegmentedControl.svelte.d.ts +26 -0
  225. package/dist/ui/Sortable.svelte +163 -0
  226. package/dist/ui/Sortable.svelte.d.ts +47 -0
  227. package/dist/ui/Table.svelte +383 -80
  228. package/dist/ui/Table.svelte.d.ts +43 -2
  229. package/dist/ui/Tabs.svelte +22 -18
  230. package/dist/ui/Tabs.svelte.d.ts +6 -2
  231. package/dist/ui/ThemeSwitcher.svelte +26 -7
  232. package/dist/ui/ThemeSwitcher.svelte.d.ts +4 -2
  233. package/dist/ui/Tooltip.svelte +312 -180
  234. package/dist/ui/Tooltip.svelte.d.ts +4 -3
  235. package/dist/uiTheme.svelte.d.ts +86 -0
  236. package/dist/uiTheme.svelte.js +214 -0
  237. package/dist/util/DateFunctions.js +1 -1
  238. package/dist/util/DragDrop.d.ts +50 -0
  239. package/dist/util/DragDrop.js +154 -0
  240. package/dist/util/NavigateTo.js +2 -2
  241. package/dist/util/dayjs.d.ts +4 -0
  242. package/dist/util/dayjs.js +15 -0
  243. package/package.json +66 -26
  244. package/dist/display/Alert.svelte +0 -179
  245. package/dist/display/Alert.svelte.d.ts +0 -13
  246. package/dist/form/FileInput.svelte +0 -235
  247. package/dist/form/FileInput.svelte.d.ts +0 -23
  248. package/dist/form/PasswordInput.svelte +0 -253
  249. package/dist/form/PasswordInput.svelte.d.ts +0 -34
  250. package/dist/form/Rating.svelte +0 -235
  251. package/dist/form/Rating.svelte.d.ts +0 -21
  252. package/dist/styles/components.css +0 -199
  253. package/dist/styles/dark.css +0 -146
  254. package/dist/styles/index.css +0 -116
  255. package/dist/styles/reset.css +0 -110
  256. package/dist/styles/semantic.css +0 -86
  257. package/dist/styles/tokens.css +0 -203
  258. package/dist/styles/utilities.css +0 -523
  259. package/dist/ui/Breadcrumbs.svelte +0 -131
  260. package/dist/ui/Breadcrumbs.svelte.d.ts +0 -16
  261. package/dist/ui/LoadingOverlay.svelte +0 -53
  262. package/dist/ui/LoadingOverlay.svelte.d.ts +0 -11
  263. package/dist/ui/Progress.svelte +0 -191
  264. package/dist/ui/Progress.svelte.d.ts +0 -15
  265. package/dist/ui/RingProgress.svelte +0 -141
  266. package/dist/ui/RingProgress.svelte.d.ts +0 -18
  267. package/dist/ui/Skeleton.svelte +0 -85
  268. package/dist/ui/Skeleton.svelte.d.ts +0 -12
  269. package/dist/ui/Stepper.svelte +0 -355
  270. package/dist/ui/Stepper.svelte.d.ts +0 -24
  271. package/dist/ui/Timeline.svelte +0 -225
  272. package/dist/ui/Timeline.svelte.d.ts +0 -23
  273. /package/dist/{actions → util}/ClickOutside.d.ts +0 -0
  274. /package/dist/{actions → util}/ClickOutside.js +0 -0
  275. /package/dist/{transitions → util}/Transitions.d.ts +0 -0
  276. /package/dist/{transitions → util}/Transitions.js +0 -0
@@ -1,34 +0,0 @@
1
- import { type Snippet } from 'svelte';
2
- interface Props {
3
- label?: string;
4
- inputId?: string;
5
- placeholder?: string;
6
- required?: boolean;
7
- autofocus?: boolean;
8
- /** HTML autocomplete attribute */
9
- autocomplete?: string;
10
- loading?: boolean;
11
- groupClass?: string;
12
- leftIconSvg?: string;
13
- class?: string;
14
- containerClass?: string;
15
- disabled?: boolean;
16
- value?: string;
17
- visible?: boolean;
18
- isFocused?: boolean;
19
- showError?: boolean;
20
- errorText?: string;
21
- tooltipLocation?: 'top' | 'bottom' | 'left' | 'right';
22
- tooltipText?: string;
23
- onenter?: (v: string) => void;
24
- onchange?: (e: Event) => void;
25
- oninput?: (e: Event) => void;
26
- onkeydown?: (e: KeyboardEvent) => void;
27
- onfocus?: (e: FocusEvent) => void;
28
- onblur?: (e: FocusEvent) => void;
29
- onVisibilityChange?: (visible: boolean) => void;
30
- children?: Snippet;
31
- }
32
- declare const PasswordInput: import("svelte").Component<Props, {}, "value" | "visible">;
33
- type PasswordInput = ReturnType<typeof PasswordInput>;
34
- export default PasswordInput;
@@ -1,235 +0,0 @@
1
- <script lang="ts">
2
- import Icon from '../icon/Icon.svelte';
3
- import { iconStar } from '../icon/index.js';
4
- import FormGroup from './FormGroup.svelte';
5
-
6
- interface Props {
7
- label?: string;
8
- value?: number;
9
- count?: number;
10
- size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
11
- color?: 'primary' | 'secondary' | 'accent' | 'warning';
12
- emptySymbol?: string;
13
- fullSymbol?: string;
14
- readOnly?: boolean;
15
- fractions?: 1 | 2 | 4;
16
- highlightSelectedOnly?: boolean;
17
- required?: boolean;
18
- showError?: boolean;
19
- errorText?: string;
20
- class?: string;
21
- onchange?: (value: number) => void;
22
- onhover?: (value: number) => void;
23
- }
24
-
25
- let {
26
- label = '',
27
- value = $bindable(0),
28
- count = 5,
29
- size = 'md',
30
- color = 'warning',
31
- emptySymbol = undefined,
32
- fullSymbol = undefined,
33
- readOnly = false,
34
- fractions = 1,
35
- highlightSelectedOnly = false,
36
- required = false,
37
- showError = false,
38
- errorText = '',
39
- class: classes = '',
40
- onchange,
41
- onhover
42
- }: Props = $props();
43
-
44
- let hoverValue = $state(-1);
45
-
46
- const displayValue = $derived(hoverValue >= 0 ? hoverValue : value);
47
-
48
- const sizeMap: Record<string, string> = {
49
- xs: '16px',
50
- sm: '20px',
51
- md: '24px',
52
- lg: '32px',
53
- xl: '40px'
54
- };
55
-
56
- const iconSize = $derived(sizeMap[size] || '24px');
57
-
58
- function handleClick(index: number, fraction: number = 1) {
59
- if (readOnly) return;
60
- const newValue = index + fraction / fractions;
61
- value = newValue;
62
- onchange?.(newValue);
63
- }
64
-
65
- function handleMouseEnter(index: number, fraction: number = 1) {
66
- if (readOnly) return;
67
- const newHoverValue = index + fraction / fractions;
68
- hoverValue = newHoverValue;
69
- onhover?.(newHoverValue);
70
- }
71
-
72
- function handleMouseLeave() {
73
- hoverValue = -1;
74
- }
75
-
76
- function getSymbolState(index: number): 'empty' | 'full' | 'partial' {
77
- const currentValue = displayValue;
78
- if (highlightSelectedOnly) {
79
- return Math.ceil(currentValue) === index + 1 ? 'full' : 'empty';
80
- }
81
- if (currentValue >= index + 1) return 'full';
82
- if (currentValue > index) return 'partial';
83
- return 'empty';
84
- }
85
-
86
- function getPartialWidth(index: number): number {
87
- const currentValue = displayValue;
88
- if (currentValue <= index) return 0;
89
- if (currentValue >= index + 1) return 100;
90
- return (currentValue - index) * 100;
91
- }
92
- </script>
93
-
94
- <FormGroup {label} {required} {showError} {errorText} class={classes}>
95
- <div
96
- class="rating size-{size} color-{color}"
97
- class:read-only={readOnly}
98
- role="slider"
99
- tabindex={readOnly ? -1 : 0}
100
- aria-valuenow={value}
101
- aria-valuemin={0}
102
- aria-valuemax={count}
103
- aria-label={label || 'Rating'}
104
- onmouseleave={handleMouseLeave}
105
- >
106
- {#each Array(count) as _, index (index)}
107
- {@const state = getSymbolState(index)}
108
- {@const partialWidth = getPartialWidth(index)}
109
- <div class="rating-symbol-wrapper">
110
- {#if fractions > 1}
111
- <!-- Fractional rating with invisible click zones -->
112
- {#each Array(fractions) as __, fractionIndex (fractionIndex)}
113
- <button
114
- type="button"
115
- class="rating-fraction-zone"
116
- style="width: {100 / fractions}%; left: {(fractionIndex / fractions) * 100}%;"
117
- onclick={() => handleClick(index, fractionIndex + 1)}
118
- onmouseenter={() => handleMouseEnter(index, fractionIndex + 1)}
119
- disabled={readOnly}
120
- aria-label="Rate {index + (fractionIndex + 1) / fractions}"
121
- ></button>
122
- {/each}
123
- {:else}
124
- <button
125
- type="button"
126
- class="rating-button"
127
- onclick={() => handleClick(index)}
128
- onmouseenter={() => handleMouseEnter(index, 1)}
129
- disabled={readOnly}
130
- aria-label="Rate {index + 1}"
131
- ></button>
132
- {/if}
133
- <div class="rating-symbol empty">
134
- <Icon svg={emptySymbol || iconStar} size={iconSize} />
135
- </div>
136
- <div class="rating-symbol full" style="width: {partialWidth}%;">
137
- <Icon svg={fullSymbol || iconStar} size={iconSize} />
138
- </div>
139
- </div>
140
- {/each}
141
- </div>
142
- </FormGroup>
143
-
144
- <style>
145
- .rating {
146
- display: inline-flex;
147
- gap: var(--pui-spacing-1);
148
- }
149
-
150
- .rating.read-only {
151
- pointer-events: none;
152
- }
153
-
154
- .rating-symbol-wrapper {
155
- position: relative;
156
- cursor: pointer;
157
- }
158
-
159
- .read-only .rating-symbol-wrapper {
160
- cursor: default;
161
- }
162
-
163
- .rating-button,
164
- .rating-fraction-zone {
165
- position: absolute;
166
- top: 0;
167
- height: 100%;
168
- background: transparent;
169
- border: none;
170
- cursor: pointer;
171
- z-index: 2;
172
- padding: 0;
173
- }
174
-
175
- .rating-button {
176
- left: 0;
177
- width: 100%;
178
- }
179
-
180
- .rating-button:disabled,
181
- .rating-fraction-zone:disabled {
182
- cursor: default;
183
- }
184
-
185
- .rating-symbol {
186
- display: flex;
187
- align-items: center;
188
- justify-content: center;
189
- transition: transform var(--pui-transition-fast) var(--pui-ease-out);
190
- }
191
-
192
- .rating-symbol-wrapper:hover .rating-symbol {
193
- transform: scale(1.1);
194
- }
195
-
196
- .read-only .rating-symbol-wrapper:hover .rating-symbol {
197
- transform: none;
198
- }
199
-
200
- .rating-symbol.empty {
201
- color: var(--pui-color-gray-300);
202
- }
203
-
204
- :global(.dark) .rating-symbol.empty {
205
- color: var(--pui-color-dark-border);
206
- }
207
-
208
- .rating-symbol.full {
209
- position: absolute;
210
- top: 0;
211
- left: 0;
212
- overflow: hidden;
213
- color: var(--rating-color, var(--pui-color-warning));
214
- }
215
-
216
- .rating-symbol.full :global(svg) {
217
- fill: currentColor;
218
- }
219
-
220
- /* Colors */
221
- .color-primary {
222
- --rating-color: var(--pui-color-primary);
223
- }
224
- .color-secondary {
225
- --rating-color: var(--pui-color-secondary);
226
- }
227
- .color-accent {
228
- --rating-color: var(--pui-color-accent);
229
- }
230
- .color-warning {
231
- --rating-color: var(--pui-color-warning);
232
- }
233
-
234
- /* Sizes via icon prop */
235
- </style>
@@ -1,21 +0,0 @@
1
- interface Props {
2
- label?: string;
3
- value?: number;
4
- count?: number;
5
- size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
6
- color?: 'primary' | 'secondary' | 'accent' | 'warning';
7
- emptySymbol?: string;
8
- fullSymbol?: string;
9
- readOnly?: boolean;
10
- fractions?: 1 | 2 | 4;
11
- highlightSelectedOnly?: boolean;
12
- required?: boolean;
13
- showError?: boolean;
14
- errorText?: string;
15
- class?: string;
16
- onchange?: (value: number) => void;
17
- onhover?: (value: number) => void;
18
- }
19
- declare const Rating: import("svelte").Component<Props, {}, "value">;
20
- type Rating = ReturnType<typeof Rating>;
21
- export default Rating;
@@ -1,199 +0,0 @@
1
- /**
2
- * Component Variables
3
- * Component-specific CSS variables for fine-grained customization.
4
- */
5
-
6
- :root {
7
- /* ============================================
8
- * FORM INPUTS
9
- * ============================================ */
10
- --pui-input-bg: var(--pui-color-white);
11
- --pui-input-bg-disabled: var(--pui-color-gray-200);
12
- --pui-input-border: var(--pui-border-default);
13
- --pui-input-border-focus: var(--pui-color-primary);
14
- --pui-input-border-error: var(--pui-color-danger);
15
- --pui-input-placeholder: var(--pui-text-placeholder);
16
- --pui-input-text: var(--pui-text-primary);
17
- --pui-input-padding-y: var(--pui-spacing-1);
18
- --pui-input-padding-x: var(--pui-spacing-2);
19
- --pui-input-font-size: var(--pui-font-size-md);
20
- --pui-input-border-radius: var(--pui-radius-base);
21
- --pui-input-border-width: 1px;
22
-
23
- /* ============================================
24
- * BUTTON
25
- * ============================================ */
26
- --pui-btn-padding-y: var(--pui-spacing-2);
27
- --pui-btn-padding-x: var(--pui-spacing-4);
28
- --pui-btn-font-size: var(--pui-font-size-base);
29
- --pui-btn-font-weight: var(--pui-font-weight-semibold);
30
- --pui-btn-border-radius: var(--pui-radius-md);
31
- --pui-btn-border-width: 1px;
32
-
33
- /* ============================================
34
- * PAPER
35
- * ============================================ */
36
- --pui-paper-bg: var(--pui-bg-surface);
37
- --pui-paper-shadow: var(--pui-shadow-sm);
38
- --pui-paper-radius: var(--pui-radius-base);
39
- --pui-paper-padding: var(--pui-spacing-3);
40
- --pui-paper-title-bg: rgb(252, 252, 252);
41
- --pui-paper-title-border: rgb(229, 231, 235);
42
- --pui-paper-body-bg: var(--pui-color-white);
43
-
44
- /* ============================================
45
- * DIALOG
46
- * ============================================ */
47
- --pui-dialog-backdrop: var(--pui-bg-overlay-dark);
48
- --pui-dialog-bg: var(--pui-bg-page);
49
- --pui-dialog-radius: var(--pui-radius-base);
50
- --pui-dialog-shadow: var(--pui-shadow-lg);
51
- --pui-dialog-sm-width: 20rem;
52
- --pui-dialog-md-width: 30rem;
53
- --pui-dialog-lg-width: 40rem;
54
- --pui-dialog-xl-width: 50rem;
55
-
56
- /* ============================================
57
- * DRAWER
58
- * ============================================ */
59
- --pui-drawer-bg: var(--pui-bg-page);
60
- --pui-drawer-shadow: var(--pui-shadow-lg);
61
- --pui-drawer-width: 400px;
62
- --pui-drawer-max-width: 90vw;
63
-
64
- /* ============================================
65
- * SIDENAV
66
- * ============================================ */
67
- --pui-sidenav-width: 260px;
68
- --pui-sidenav-collapsed-width: 60px;
69
- --pui-sidenav-bg: var(--pui-bg-surface);
70
- --pui-sidenav-border: var(--pui-border-default);
71
- --pui-sidenav-item-hover-bg: rgba(var(--pui-color-primary-rgb), 0.08);
72
- --pui-sidenav-item-active-bg: rgba(var(--pui-color-secondary-rgb), 0.2);
73
- --pui-sidenav-item-active-border: var(--pui-color-secondary);
74
-
75
- /* ============================================
76
- * NAVBAR
77
- * ============================================ */
78
- --pui-navbar-height: 60px;
79
- --pui-navbar-bg: var(--pui-bg-surface);
80
- --pui-navbar-border: var(--pui-border-default);
81
-
82
- /* ============================================
83
- * DROPDOWN
84
- * ============================================ */
85
- --pui-dropdown-bg: var(--pui-bg-surface);
86
- --pui-dropdown-border: var(--pui-border-default);
87
- --pui-dropdown-radius: var(--pui-radius-md);
88
- --pui-dropdown-shadow: var(--pui-shadow-md);
89
- --pui-dropdown-item-hover-bg: var(--pui-bg-surface-raised);
90
- --pui-dropdown-item-active-bg: rgba(var(--pui-color-secondary-rgb), 0.15);
91
-
92
- /* ============================================
93
- * POPOVER
94
- * ============================================ */
95
- --pui-popover-bg: var(--pui-bg-surface);
96
- --pui-popover-border: var(--pui-border-default);
97
- --pui-popover-radius: var(--pui-radius-md);
98
- --pui-popover-shadow: var(--pui-shadow-md);
99
-
100
- /* ============================================
101
- * TOOLTIP
102
- * ============================================ */
103
- --pui-tooltip-bg: var(--pui-color-gray-900);
104
- --pui-tooltip-text: var(--pui-color-white);
105
- --pui-tooltip-radius: var(--pui-radius-base);
106
-
107
- /* ============================================
108
- * BADGE
109
- * ============================================ */
110
- --pui-badge-padding-y: var(--pui-spacing-0_5);
111
- --pui-badge-padding-x: var(--pui-spacing-2);
112
- --pui-badge-font-size: var(--pui-font-size-xs);
113
- --pui-badge-radius: var(--pui-radius-full);
114
-
115
- /* ============================================
116
- * TABLE
117
- * ============================================ */
118
- --pui-table-bg: var(--pui-bg-surface);
119
- --pui-table-border: var(--pui-border-subtle);
120
- --pui-table-radius: var(--pui-radius-base);
121
- --pui-table-header-bg: var(--pui-bg-surface-raised);
122
- --pui-table-row-hover-bg: var(--pui-bg-surface-raised);
123
-
124
- /* ============================================
125
- * TABS
126
- * ============================================ */
127
- --pui-tabs-border: var(--pui-border-default);
128
- --pui-tab-hover-bg: var(--pui-bg-surface-raised);
129
- --pui-tab-active-border: var(--pui-color-secondary);
130
-
131
- /* ============================================
132
- * ALERT
133
- * ============================================ */
134
- --pui-alert-radius: var(--pui-radius-md);
135
- --pui-alert-info-bg: rgba(28, 126, 214, 0.1);
136
- --pui-alert-info-border: var(--pui-color-info);
137
- --pui-alert-success-bg: rgba(55, 178, 77, 0.1);
138
- --pui-alert-success-border: var(--pui-color-success);
139
- --pui-alert-warning-bg: rgba(252, 196, 25, 0.1);
140
- --pui-alert-warning-border: var(--pui-color-warning);
141
- --pui-alert-danger-bg: var(--pui-color-danger-subtle);
142
- --pui-alert-danger-border: var(--pui-color-danger);
143
-
144
- /* ============================================
145
- * AVATAR
146
- * ============================================ */
147
- --pui-avatar-bg: var(--pui-color-gray-300);
148
- --pui-avatar-text: var(--pui-color-gray-700);
149
- --pui-avatar-radius: var(--pui-radius-full);
150
-
151
- /* ============================================
152
- * LOADER
153
- * ============================================ */
154
- --pui-loader-color: var(--pui-color-primary);
155
- --pui-loader-size: 2rem;
156
-
157
- /* ============================================
158
- * SWITCH
159
- * ============================================ */
160
- --pui-switch-width: 2.5rem;
161
- --pui-switch-height: 1.5rem;
162
- --pui-switch-bg: var(--pui-color-gray-300);
163
- --pui-switch-bg-checked: var(--pui-color-secondary);
164
- --pui-switch-thumb-bg: var(--pui-color-white);
165
-
166
- /* ============================================
167
- * CHECKBOX & RADIO
168
- * ============================================ */
169
- --pui-check-size: 1.125rem;
170
- --pui-check-bg: var(--pui-input-bg);
171
- --pui-check-border: var(--pui-input-border);
172
- --pui-check-bg-checked: var(--pui-color-primary);
173
- --pui-check-icon-color: var(--pui-color-primary);
174
-
175
- /* ============================================
176
- * DATEPICKER
177
- * ============================================ */
178
- --pui-datepicker-bg: var(--pui-bg-surface);
179
- --pui-datepicker-border: var(--pui-border-default);
180
- --pui-datepicker-shadow: var(--pui-shadow-md);
181
- --pui-datepicker-day-selected-bg: var(--pui-color-secondary);
182
- --pui-datepicker-day-selected-text: var(--pui-color-primary);
183
- --pui-datepicker-day-today-border: var(--pui-color-accent);
184
-
185
- /* ============================================
186
- * PAGINATION
187
- * ============================================ */
188
- --pui-pagination-item-hover-bg: var(--pui-bg-surface-raised);
189
- --pui-pagination-item-active-bg: var(--pui-color-primary);
190
- --pui-pagination-item-active-text: var(--pui-color-white);
191
-
192
- /* ============================================
193
- * TOAST
194
- * ============================================ */
195
- --pui-toast-bg: var(--pui-bg-surface);
196
- --pui-toast-border: var(--pui-border-default);
197
- --pui-toast-radius: var(--pui-radius-md);
198
- --pui-toast-shadow: var(--pui-shadow-lg);
199
- }
@@ -1,146 +0,0 @@
1
- /**
2
- * Dark Theme Overrides
3
- * Override variables when .dark class is applied to the document.
4
- */
5
-
6
- .dark {
7
- /* ============================================
8
- * SURFACE COLORS
9
- * ============================================ */
10
- --pui-bg-page: var(--pui-color-dark-100);
11
- --pui-bg-surface: var(--pui-color-dark-400);
12
- --pui-bg-surface-raised: var(--pui-color-dark-200);
13
- --pui-bg-surface-sunken: var(--pui-color-dark-400);
14
-
15
- /* ============================================
16
- * TEXT COLORS
17
- * ============================================ */
18
- --pui-text-primary: var(--pui-color-off-white);
19
- --pui-text-secondary: rgb(180, 180, 180);
20
- --pui-text-muted: rgb(140, 140, 140);
21
- --pui-text-disabled: rgb(100, 100, 100);
22
- --pui-text-placeholder: rgb(115, 115, 115);
23
- --pui-text-danger: var(--pui-color-danger-lighter);
24
-
25
- /* ============================================
26
- * BORDER COLORS
27
- * ============================================ */
28
- --pui-border-default: var(--pui-color-dark-border);
29
- --pui-border-subtle: var(--pui-color-dark-border-subtle);
30
- --pui-border-strong: rgb(75, 80, 90);
31
-
32
- /* ============================================
33
- * ACCENT COLORS
34
- * ============================================ */
35
- --pui-accent-color-rgb: var(--pui-color-secondary-rgb);
36
- --pui-accent-color: var(--pui-color-secondary);
37
- --pui-accent-text-color: var(--pui-color-black);
38
-
39
- /* ============================================
40
- * SCROLLBAR
41
- * ============================================ */
42
- --pui-scrollbar-track: var(--pui-color-dark-500);
43
- --pui-scrollbar-thumb-border: var(--pui-color-black);
44
-
45
- /* ============================================
46
- * FORM INPUTS
47
- * ============================================ */
48
- --pui-input-bg: var(--pui-color-dark-200);
49
- --pui-input-bg-disabled: var(--pui-color-dark-border);
50
-
51
- /* ============================================
52
- * PAPER
53
- * ============================================ */
54
- --pui-paper-title-bg: var(--pui-color-dark-400);
55
- --pui-paper-title-border: var(--pui-color-dark-border-subtle);
56
- --pui-paper-body-bg: var(--pui-color-dark-300);
57
-
58
- /* ============================================
59
- * DIALOG
60
- * ============================================ */
61
- --pui-dialog-backdrop: rgba(0, 0, 0, 0.75);
62
-
63
- /* ============================================
64
- * SIDENAV
65
- * ============================================ */
66
- --pui-sidenav-item-hover-bg: rgba(var(--pui-color-primary-rgb), 0.2);
67
- --pui-sidenav-item-active-bg: rgba(var(--pui-color-primary-rgb), 0.3);
68
- --pui-sidenav-item-active-border: var(--pui-color-primary);
69
-
70
- /* ============================================
71
- * DROPDOWN
72
- * ============================================ */
73
- --pui-dropdown-item-hover-bg: var(--pui-color-dark-200);
74
- --pui-dropdown-item-active-bg: rgba(var(--pui-color-secondary-rgb), 0.2);
75
-
76
- /* ============================================
77
- * TOOLTIP
78
- * ============================================ */
79
- --pui-tooltip-bg: var(--pui-color-gray-100);
80
- --pui-tooltip-text: var(--pui-color-gray-900);
81
-
82
- /* ============================================
83
- * TABLE
84
- * ============================================ */
85
- --pui-table-header-bg: var(--pui-color-dark-400);
86
- --pui-table-row-hover-bg: var(--pui-color-dark-200);
87
-
88
- /* ============================================
89
- * TABS
90
- * ============================================ */
91
- --pui-tab-hover-bg: var(--pui-color-dark-200);
92
-
93
- /* ============================================
94
- * ALERT
95
- * ============================================ */
96
- --pui-alert-info-bg: #032830;
97
- --pui-alert-info-border: #087990;
98
- --pui-alert-success-bg: #051b11;
99
- --pui-alert-success-border: #0f5132;
100
- --pui-alert-warning-bg: #332701;
101
- --pui-alert-warning-border: #997404;
102
- --pui-alert-danger-bg: #2c0b0e;
103
- --pui-alert-danger-border: #842029;
104
-
105
- /* ============================================
106
- * AVATAR
107
- * ============================================ */
108
- --pui-avatar-bg: var(--pui-color-gray-700);
109
- --pui-avatar-text: var(--pui-color-gray-200);
110
-
111
- /* ============================================
112
- * LOADER
113
- * ============================================ */
114
- --pui-loader-color: var(--pui-color-secondary);
115
-
116
- /* ============================================
117
- * SELECT
118
- * ============================================ */
119
- --pui-select-option-hover-bg: var(--pui-color-dark-200);
120
- --pui-select-option-selected-bg: rgba(var(--pui-color-secondary-rgb), 0.2);
121
-
122
- /* ============================================
123
- * DATEPICKER
124
- * ============================================ */
125
- --pui-datepicker-day-hover-bg: var(--pui-color-dark-200);
126
-
127
- /* ============================================
128
- * PAGINATION
129
- * ============================================ */
130
- --pui-pagination-item-hover-bg: var(--pui-color-dark-200);
131
- --pui-pagination-item-active-bg: var(--pui-color-secondary);
132
- --pui-pagination-item-active-text: var(--pui-color-black);
133
-
134
- /* ============================================
135
- * INTERACTIVE STATES
136
- * ============================================ */
137
- --pui-bg-hover: rgba(255, 255, 255, 0.06);
138
- --pui-bg-active: rgba(255, 255, 255, 0.1);
139
-
140
- /* ============================================
141
- * DISABLED STATES
142
- * ============================================ */
143
- --pui-border-disabled: #666;
144
- --pui-bg-disabled: #444;
145
- --pui-text-on-disabled: var(--pui-color-gray-600);
146
- }