@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,22 +1,32 @@
1
- <script lang="ts">
2
- import Textbox from "./Textbox.svelte";
3
- import { fade } from "svelte/transition";
4
- import dayjs from "dayjs";
5
- import { clickOutside } from "../actions/ClickOutside.js";
6
- import ActionIcon from "../ui/ActionIcon.svelte";
7
- import { iconChevronLeft, iconChevronRight, iconX } from "../icon/index.js";
8
- import TimePicker from "./TimePicker.svelte";
9
-
10
- interface Props {
1
+ <script module lang="ts">
2
+ export interface DateTimePickerProps {
3
+ /** Label text displayed above the picker */
11
4
  label?: string;
5
+ /** Disable the date/time picker */
12
6
  disabled?: boolean;
7
+ /** Mark field as required (shows asterisk) */
13
8
  required?: boolean;
9
+ /** CSS classes for the container element */
14
10
  containerClass?: string;
11
+ /** Selected date/time value in ISO format (bindable) */
15
12
  value?: string | undefined;
13
+ /** Minimum selectable date/time in ISO format */
16
14
  minDate?: string | undefined;
15
+ /** Maximum selectable date/time in ISO format */
17
16
  maxDate?: string | undefined;
17
+ /** Callback when selected date/time changes */
18
18
  onchange?: (date: string | undefined) => void;
19
19
  }
20
+ </script>
21
+
22
+ <script lang="ts">
23
+ import Textbox from './Textbox.svelte';
24
+ import { fade } from 'svelte/transition';
25
+ import dayjs from '../util/dayjs.js';
26
+ import { clickOutside } from '../util/ClickOutside.js';
27
+ import ActionIcon from '../ui/ActionIcon.svelte';
28
+ import { iconChevronLeft, iconChevronRight, iconX } from '../icon/index.js';
29
+ import TimePicker from './TimePicker.svelte';
20
30
 
21
31
  let {
22
32
  label,
@@ -26,20 +36,16 @@
26
36
  value = $bindable(undefined),
27
37
  minDate,
28
38
  maxDate,
29
- onchange,
30
- }: Props = $props();
39
+ onchange
40
+ }: DateTimePickerProps = $props();
31
41
 
32
- const days = ["Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"];
42
+ const days = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'];
33
43
 
34
44
  // Parse min and max dates
35
- const minDateParsed = $derived(
36
- minDate ? dayjs(minDate).startOf("date") : undefined,
37
- );
38
- const maxDateParsed = $derived(
39
- maxDate ? dayjs(maxDate).startOf("date") : undefined,
40
- );
41
-
42
- type DisplayedDateColor = "normal" | "red" | "grey" | "disabled";
45
+ const minDateParsed = $derived(minDate ? dayjs(minDate).startOf('date') : undefined);
46
+ const maxDateParsed = $derived(maxDate ? dayjs(maxDate).startOf('date') : undefined);
47
+
48
+ type DisplayedDateColor = 'normal' | 'red' | 'grey' | 'disabled';
43
49
  type DisplayedDate = {
44
50
  date: dayjs.Dayjs;
45
51
  text: string;
@@ -48,7 +54,7 @@
48
54
  isDisabled: boolean;
49
55
  };
50
56
 
51
- const todayDate = dayjs().startOf("date");
57
+ const todayDate = dayjs().startOf('date');
52
58
 
53
59
  let selectedDate: dayjs.Dayjs | undefined = $state(undefined);
54
60
  let selectedTime: string | undefined = $state(undefined);
@@ -57,8 +63,8 @@
57
63
  if (value) {
58
64
  const date = dayjs(value);
59
65
  // Extract time if present BEFORE calling setDate
60
- if (date.isValid() && value.includes("T")) {
61
- selectedTime = date.format("HH:mm:ss");
66
+ if (date.isValid() && value.includes('T')) {
67
+ selectedTime = date.format('HH:mm:ss');
62
68
  }
63
69
  setDate(date, false, true);
64
70
  } else {
@@ -66,13 +72,13 @@
66
72
  setDate(undefined, false, true);
67
73
  }
68
74
  if (selectedDate) {
69
- focusedMonth = selectedDate.startOf("month");
75
+ focusedMonth = selectedDate.startOf('month');
70
76
  }
71
77
  });
72
78
 
73
79
  let showRequiredRing = $state(false);
74
80
  // svelte-ignore state_referenced_locally
75
- let focusedMonth = $state((selectedDate ?? todayDate).startOf("month"));
81
+ let focusedMonth = $state((selectedDate ?? todayDate).startOf('month'));
76
82
 
77
83
  function startOfWeek(date: dayjs.Dayjs) {
78
84
  // We celebrate Monday as the one true start of the week in this household. NO exceptions
@@ -86,7 +92,7 @@
86
92
  function getFullWeekCount(month: dayjs.Dayjs) {
87
93
  const start = startOfWeek(month.date(1));
88
94
  const end = endOfWeek(month.date(month.daysInMonth()));
89
- const diff = end.diff(start, "day", true);
95
+ const diff = end.diff(start, 'day', true);
90
96
 
91
97
  return Math.ceil(diff / 7) * 7;
92
98
  }
@@ -97,10 +103,7 @@
97
103
  return true;
98
104
  }
99
105
 
100
- function calculateDays(
101
- selectedDate: dayjs.Dayjs | undefined,
102
- focusedMonth: dayjs.Dayjs,
103
- ) {
106
+ function calculateDays(selectedDate: dayjs.Dayjs | undefined, focusedMonth: dayjs.Dayjs) {
104
107
  // Fill out the entire 7 day grid
105
108
  const length = getFullWeekCount(focusedMonth);
106
109
 
@@ -109,31 +112,29 @@
109
112
  const startDate = startOfWeek(focusedMonth);
110
113
 
111
114
  for (let i = 0; i < length; i++) {
112
- const date = startDate.add(i, "day");
115
+ const date = startDate.add(i, 'day');
113
116
 
114
117
  let color: DisplayedDateColor;
115
118
  let isDisabled = false;
116
119
 
117
120
  // Check if date is outside of min/max range
118
121
  if (!isDateInRange(date)) {
119
- color = "disabled";
122
+ color = 'disabled';
120
123
  isDisabled = true;
121
- } else if (!date.isSame(focusedMonth, "month")) {
122
- color = "grey";
124
+ } else if (!date.isSame(focusedMonth, 'month')) {
125
+ color = 'grey';
123
126
  } else if (date.day() == 0 || date.day() == 6) {
124
- color = "red";
127
+ color = 'red';
125
128
  } else {
126
- color = "normal";
129
+ color = 'normal';
127
130
  }
128
131
 
129
132
  displayedDates.push({
130
133
  date,
131
134
  text: date.date().toString(),
132
135
  color,
133
- isSelected:
134
- selectedDate !== undefined &&
135
- selectedDate.isSame(date, "date"),
136
- isDisabled,
136
+ isSelected: selectedDate !== undefined && selectedDate.isSame(date, 'date'),
137
+ isDisabled
137
138
  });
138
139
  }
139
140
 
@@ -144,29 +145,25 @@
144
145
  let classes = [];
145
146
 
146
147
  if (date.isDisabled) {
147
- classes.push("disabled");
148
- } else if (date.color === "red") {
149
- classes.push("text-red");
150
- } else if (date.color === "grey") {
151
- classes.push("text-grey");
148
+ classes.push('disabled');
149
+ } else if (date.color === 'red') {
150
+ classes.push('text-red');
151
+ } else if (date.color === 'grey') {
152
+ classes.push('text-grey');
152
153
  }
153
154
 
154
155
  if (date.isSelected && !date.isDisabled) {
155
- classes.push("selected");
156
+ classes.push('selected');
156
157
  } else {
157
- if (date.date.isSame(todayDate, "date") && !date.isDisabled) {
158
- classes.push("today");
158
+ if (date.date.isSame(todayDate, 'date') && !date.isDisabled) {
159
+ classes.push('today');
159
160
  }
160
161
  }
161
162
 
162
- return classes.join(" ");
163
+ return classes.join(' ');
163
164
  }
164
165
 
165
- function setDate(
166
- newDate: dayjs.Dayjs | undefined,
167
- fromTextbox: boolean,
168
- fromValue: boolean,
169
- ) {
166
+ function setDate(newDate: dayjs.Dayjs | undefined, fromTextbox: boolean, fromValue: boolean) {
170
167
  if (newDate === undefined && selectedDate === undefined) return;
171
168
 
172
169
  // Check if the new date is within the allowed range
@@ -176,55 +173,46 @@
176
173
  }
177
174
 
178
175
  const isSameDate =
179
- newDate !== undefined &&
180
- selectedDate !== undefined &&
181
- newDate.isSame(selectedDate, "date");
182
-
183
- if (
184
- newDate === undefined ||
185
- !newDate.isValid() ||
186
- (isSameDate && !fromTextbox && !fromValue)
187
- ) {
176
+ newDate !== undefined && selectedDate !== undefined && newDate.isSame(selectedDate, 'date');
177
+
178
+ if (newDate === undefined || !newDate.isValid() || (isSameDate && !fromTextbox && !fromValue)) {
188
179
  value = undefined;
189
180
  selectedDate = undefined;
190
- readableDate = "";
181
+ readableDate = '';
191
182
  return;
192
183
  } else if (isSameDate) {
193
184
  return;
194
185
  }
195
186
 
196
187
  selectedDate = newDate;
197
- focusedMonth = newDate.startOf("month");
188
+ focusedMonth = newDate.startOf('month');
198
189
 
199
190
  // Combine date and time
200
- let dateString = newDate.format("YYYY-MM-DD");
201
- let timeString = selectedTime || "00:00:00";
191
+ let dateString = newDate.format('YYYY-MM-DD');
192
+ let timeString = selectedTime || '00:00:00';
202
193
  value = `${dateString}T${timeString}`;
203
- value = dayjs(value).format("YYYY-MM-DDTHH:mm:ssZ");
194
+ value = dayjs(value).format('YYYY-MM-DDTHH:mm:ssZ');
204
195
  onchange?.(value);
205
196
 
206
- if (!fromTextbox)
207
- readableDate = dayjs(value).format("D MMMM YYYY - h:mma");
197
+ if (!fromTextbox) readableDate = dayjs(value).format('D MMMM YYYY - h:mma');
208
198
  }
209
199
 
210
200
  function incrementFocusedMonth(value: number) {
211
- focusedMonth = focusedMonth.add(value, "month");
201
+ focusedMonth = focusedMonth.add(value, 'month');
212
202
  }
213
203
 
214
204
  // -----------------------------
215
205
  // Control code
216
206
 
217
207
  let textboxElement: HTMLElement | undefined = $state(undefined);
218
- let readableDate: string = $state("");
208
+ let readableDate: string = $state('');
219
209
  let showCalendar = $state(false);
220
210
  let showYearPicker = $state(false);
221
- let dropdownPosition: "above" | "below" = $state("below");
211
+ let dropdownPosition: 'above' | 'below' = $state('below');
222
212
 
223
213
  // Year picker: show a range of years centered around the focused year
224
214
  const yearRangeSize = 12;
225
- let yearRangeStart = $state(
226
- Math.floor(dayjs().year() / yearRangeSize) * yearRangeSize,
227
- );
215
+ let yearRangeStart = $state(Math.floor(dayjs().year() / yearRangeSize) * yearRangeSize);
228
216
 
229
217
  function getYearRange() {
230
218
  const years: number[] = [];
@@ -252,25 +240,24 @@
252
240
  function toggleYearPicker() {
253
241
  if (!showYearPicker) {
254
242
  // Center the range around the focused year
255
- yearRangeStart =
256
- Math.floor(focusedMonth.year() / yearRangeSize) * yearRangeSize;
243
+ yearRangeStart = Math.floor(focusedMonth.year() / yearRangeSize) * yearRangeSize;
257
244
  }
258
245
  showYearPicker = !showYearPicker;
259
246
  }
260
247
 
261
248
  function checkDropdownPosition() {
262
249
  if (!textboxElement) return;
263
-
250
+
264
251
  const rect = textboxElement.getBoundingClientRect();
265
252
  const dropdownHeight = 400; // Approximate height of the calendar + time picker dropdown
266
253
  const spaceBelow = window.innerHeight - rect.bottom;
267
254
  const spaceAbove = rect.top;
268
-
255
+
269
256
  // If not enough space below and more space above, position above
270
257
  if (spaceBelow < dropdownHeight && spaceAbove > spaceBelow) {
271
- dropdownPosition = "above";
258
+ dropdownPosition = 'above';
272
259
  } else {
273
- dropdownPosition = "below";
260
+ dropdownPosition = 'below';
274
261
  }
275
262
  }
276
263
 
@@ -287,7 +274,7 @@
287
274
  function onDateTextChange(event: Event) {
288
275
  const textbox = event.target as HTMLInputElement;
289
276
 
290
- const date = dayjs(textbox.value, ["D MMMM YYYY", "DD/MM/YYYY"]);
277
+ const date = dayjs(textbox.value, ['D MMMM YYYY', 'DD/MM/YYYY']);
291
278
  if (date.isValid()) {
292
279
  setDate(date, true, false);
293
280
  }
@@ -297,15 +284,11 @@
297
284
  value = undefined;
298
285
  selectedDate = undefined;
299
286
  selectedTime = undefined;
300
- readableDate = "";
287
+ readableDate = '';
301
288
  onchange?.(undefined);
302
289
  }
303
290
 
304
- function handleDateChangeClick(
305
- event: MouseEvent,
306
- date: dayjs.Dayjs,
307
- isDisabled: boolean,
308
- ) {
291
+ function handleDateChangeClick(event: MouseEvent, date: dayjs.Dayjs, isDisabled: boolean) {
309
292
  if (isDisabled) {
310
293
  event.stopPropagation();
311
294
  return;
@@ -332,7 +315,7 @@
332
315
  showCalendar = true;
333
316
  }}
334
317
  onkeyup={onDateTextChange}
335
- class={showRequiredRing ? "!border-required" : ""}
318
+ class={showRequiredRing ? '!border-required' : ''}
336
319
  >
337
320
  {#snippet right()}
338
321
  {#if readableDate && !disabled}
@@ -351,11 +334,7 @@
351
334
  {/snippet}
352
335
  <div class="date-picker">
353
336
  {#if showCalendar}
354
- <div
355
- class="calendar {dropdownPosition}"
356
- transition:fade={{ duration: 200 }}
357
- use:clickOutside={onClickOutside}
358
- >
337
+ <div class="calendar {dropdownPosition}" transition:fade={{ duration: 200 }} use:clickOutside={onClickOutside}>
359
338
  <div class="month-buttons">
360
339
  {#if showYearPicker}
361
340
  <ActionIcon
@@ -363,13 +342,8 @@
363
342
  size="1.5rem"
364
343
  onclick={() => incrementYearRange(-1)}
365
344
  />
366
- <button
367
- class="month-label clickable"
368
- onclick={toggleYearPicker}
369
- >
370
- {yearRangeStart} - {yearRangeStart +
371
- yearRangeSize -
372
- 1}
345
+ <button class="month-label clickable" onclick={toggleYearPicker}>
346
+ {yearRangeStart} - {yearRangeStart + yearRangeSize - 1}
373
347
  </button>
374
348
  <ActionIcon
375
349
  svg={iconChevronRight}
@@ -382,11 +356,8 @@
382
356
  size="1.5rem"
383
357
  onclick={() => incrementFocusedMonth(-1)}
384
358
  />
385
- <button
386
- class="month-label clickable"
387
- onclick={toggleYearPicker}
388
- >
389
- {focusedMonth.format("MMMM YYYY")}
359
+ <button class="month-label clickable" onclick={toggleYearPicker}>
360
+ {focusedMonth.format('MMMM YYYY')}
390
361
  </button>
391
362
  <ActionIcon
392
363
  svg={iconChevronRight}
@@ -401,10 +372,8 @@
401
372
  {#each getYearRange() as year}
402
373
  <button
403
374
  class="year-button"
404
- class:selected={focusedMonth.year() ===
405
- year}
406
- class:current-year={todayDate.year() ===
407
- year}
375
+ class:selected={focusedMonth.year() === year}
376
+ class:current-year={todayDate.year() === year}
408
377
  class:disabled={!isYearInRange(year)}
409
378
  disabled={!isYearInRange(year)}
410
379
  onclick={() => selectYear(year)}
@@ -426,12 +395,7 @@
426
395
  <button
427
396
  class="day-button {buildDayClasses(day)}"
428
397
  disabled={day.isDisabled}
429
- onclick={(e) =>
430
- handleDateChangeClick(
431
- e,
432
- day.date,
433
- day.isDisabled,
434
- )}
398
+ onclick={(e) => handleDateChangeClick(e, day.date, day.isDisabled)}
435
399
  >
436
400
  {day.text}
437
401
  </button>
@@ -441,23 +405,18 @@
441
405
 
442
406
  <TimePicker
443
407
  bind:value={selectedTime}
444
- {minDate}
445
- {maxDate}
446
- selectedDate={selectedDate?.format("YYYY-MM-DD")}
408
+ minDate={minDate}
409
+ maxDate={maxDate}
410
+ selectedDate={selectedDate?.format('YYYY-MM-DD')}
447
411
  onchange={(t) => {
448
412
  selectedTime = t!;
449
413
  if (selectedDate) {
450
- let dateString =
451
- selectedDate.format("YYYY-MM-DD");
452
- let timeString = selectedTime || "00:00:00";
414
+ let dateString = selectedDate.format('YYYY-MM-DD');
415
+ let timeString = selectedTime || '00:00:00';
453
416
  value = `${dateString}T${timeString}`;
454
- value = dayjs(value).format(
455
- "YYYY-MM-DDTHH:mm:ssZ",
456
- );
417
+ value = dayjs(value).format('YYYY-MM-DDTHH:mm:ssZ');
457
418
  onchange?.(value);
458
- readableDate = dayjs(value).format(
459
- "D MMMM YYYY - h:mma",
460
- );
419
+ readableDate = dayjs(value).format('D MMMM YYYY - h:mma');
461
420
  }
462
421
  }}
463
422
  />
@@ -474,7 +433,7 @@
474
433
 
475
434
  .clear-button {
476
435
  position: absolute;
477
- right: var(--pui-spacing-2);
436
+ right: 0.5rem;
478
437
  top: 50%;
479
438
  transform: translateY(-50%);
480
439
  line-height: 0;
@@ -484,17 +443,17 @@
484
443
  width: 18rem;
485
444
  text-align: center;
486
445
  position: absolute;
487
- z-index: var(--pui-z-dropdown);
446
+ z-index: 10;
488
447
  user-select: none;
489
- background-color: var(--pui-bg-surface-raised);
490
- border: 1px solid var(--pui-border-default);
491
- border-radius: var(--pui-radius-md);
492
- box-shadow: var(--pui-shadow-lg);
493
- padding: var(--pui-spacing-2);
448
+ background-color: var(--paper-body-bg);
449
+ border: 1px solid var(--border-color);
450
+ border-radius: 0.375rem;
451
+ box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
452
+ padding: 0.5rem;
494
453
  }
495
454
 
496
455
  .calendar.below {
497
- top: 0;
456
+ top: 0
498
457
  }
499
458
 
500
459
  .calendar.above {
@@ -505,13 +464,13 @@
505
464
  display: flex;
506
465
  justify-content: space-between;
507
466
  align-items: center;
508
- padding: var(--pui-spacing-2);
467
+ padding: 0.5rem;
509
468
  }
510
469
 
511
470
  .month-label {
512
- font-weight: var(--pui-font-weight-semibold);
513
- color: var(--pui-text-primary);
514
- font-size: var(--pui-font-size-lg);
471
+ font-weight: 600;
472
+ color: var(--text-color);
473
+ font-size: 1.125rem;
515
474
  background: none;
516
475
  border: none;
517
476
  cursor: default;
@@ -519,53 +478,53 @@
519
478
 
520
479
  .month-label.clickable {
521
480
  cursor: pointer;
522
- padding: var(--pui-spacing-1) var(--pui-spacing-2);
523
- border-radius: var(--pui-radius-sm);
524
- transition: background-color var(--pui-transition-fast) var(--pui-ease-in-out);
481
+ padding: 0.25rem 0.5rem;
482
+ border-radius: 0.25rem;
483
+ transition: background-color 0.15s ease;
525
484
  }
526
485
 
527
486
  .month-label.clickable:hover {
528
- background-color: var(--pui-bg-hover);
487
+ background-color: rgba(var(--ui-primary-rgbc), 0.1);
529
488
  }
530
489
 
531
490
  .year-grid {
532
491
  display: grid;
533
492
  grid-template-columns: repeat(3, 1fr);
534
- gap: var(--pui-spacing-2);
535
- margin-top: var(--pui-spacing-2);
536
- padding: var(--pui-spacing-2);
493
+ gap: 0.5rem;
494
+ margin-top: 0.5rem;
495
+ padding: 0.5rem;
537
496
  }
538
497
 
539
498
  .year-button {
540
- color: var(--pui-text-primary);
541
- padding: var(--pui-spacing-3) var(--pui-spacing-2);
542
- border-radius: var(--pui-radius-md);
499
+ color: var(--text-color);
500
+ padding: 0.75rem 0.5rem;
501
+ border-radius: 0.375rem;
543
502
  border: none;
544
503
  background: transparent;
545
504
  cursor: pointer;
546
- font-size: var(--pui-font-size-sm);
547
- transition: all var(--pui-transition-fast) var(--pui-ease-in-out);
505
+ font-size: 0.875rem;
506
+ transition: all 0.15s ease;
548
507
  }
549
508
 
550
509
  .year-button:hover:not(.disabled) {
551
- background-color: var(--pui-bg-hover);
552
- color: var(--pui-color-primary);
510
+ background-color: rgba(var(--ui-primary-rgbc), 0.1);
511
+ color: var(--ui-primary);
553
512
  }
554
513
 
555
514
  .year-button.current-year {
556
- background-color: var(--pui-bg-active);
557
- color: var(--pui-color-primary);
558
- font-weight: var(--pui-font-weight-semibold);
515
+ background-color: rgba(var(--ui-primary-rgbc), 0.15);
516
+ color: var(--ui-primary);
517
+ font-weight: 600;
559
518
  }
560
519
 
561
520
  .year-button.selected {
562
- background-color: var(--pui-color-primary);
563
- color: var(--pui-color-white);
564
- font-weight: var(--pui-font-weight-semibold);
521
+ background-color: var(--ui-primary);
522
+ color: white;
523
+ font-weight: 600;
565
524
  }
566
525
 
567
526
  .year-button.disabled {
568
- color: var(--pui-text-disabled) !important;
527
+ color: rgb(163 163 163) !important;
569
528
  background-color: transparent !important;
570
529
  cursor: not-allowed !important;
571
530
  opacity: 0.5;
@@ -574,17 +533,17 @@
574
533
  .days-header-bar {
575
534
  display: grid;
576
535
  grid-template-columns: repeat(7, 1fr);
577
- margin-top: var(--pui-spacing-2);
578
- background-color: var(--pui-color-gray-100);
579
- border-radius: var(--pui-radius-sm);
580
- border: 1px solid var(--pui-border-default);
536
+ margin-top: 0.5rem;
537
+ background-color: #f8f9fa;
538
+ border-radius: 0.25rem;
539
+ border: 1px solid var(--border-color);
581
540
  }
582
541
 
583
542
  .day-label {
584
- color: var(--pui-color-gray-500);
585
- padding: var(--pui-spacing-2);
586
- font-size: var(--pui-font-size-xs);
587
- font-weight: var(--pui-font-weight-semibold);
543
+ color: #6b7280;
544
+ padding: 0.5rem;
545
+ font-size: 0.75rem;
546
+ font-weight: 600;
588
547
  text-transform: uppercase;
589
548
  text-align: center;
590
549
  }
@@ -592,50 +551,50 @@
592
551
  .days-grid {
593
552
  display: grid;
594
553
  grid-template-columns: repeat(7, 1fr);
595
- gap: 2px;
596
- margin-top: var(--pui-spacing-2);
554
+ gap: 0.125rem;
555
+ margin-top: 0.5rem;
597
556
  }
598
557
 
599
558
  .day-button {
600
- color: var(--pui-text-primary);
559
+ color: var(--text-color);
601
560
  width: 2.25rem;
602
561
  height: 2.25rem;
603
- border-radius: var(--pui-radius-md);
562
+ border-radius: 0.375rem;
604
563
  border: none;
605
564
  background: transparent;
606
565
  cursor: pointer;
607
- font-size: var(--pui-font-size-sm);
608
- transition: all var(--pui-transition-fast) var(--pui-ease-in-out);
566
+ font-size: 0.875rem;
567
+ transition: all 0.15s ease;
609
568
  justify-self: center;
610
569
  }
611
570
 
612
571
  .day-button:hover {
613
- background-color: var(--pui-bg-hover);
614
- color: var(--pui-color-primary);
572
+ background-color: rgba(var(--ui-primary-rgbc), 0.1);
573
+ color: var(--ui-primary);
615
574
  }
616
575
 
617
576
  .today {
618
- background-color: var(--pui-bg-active);
619
- color: var(--pui-color-primary);
620
- font-weight: var(--pui-font-weight-semibold);
577
+ background-color: rgba(var(--ui-primary-rgbc), 0.15);
578
+ color: var(--ui-primary);
579
+ font-weight: 600;
621
580
  }
622
581
 
623
582
  .selected {
624
- background-color: var(--pui-color-primary);
625
- color: var(--pui-color-white);
626
- font-weight: var(--pui-font-weight-semibold);
583
+ background-color: var(--ui-primary);
584
+ color: white;
585
+ font-weight: 600;
627
586
  }
628
587
 
629
588
  .text-red {
630
- color: var(--pui-color-danger);
589
+ color: rgb(248 113 113);
631
590
  }
632
591
 
633
592
  .text-grey {
634
- color: var(--pui-text-muted);
593
+ color: rgb(163 163 163);
635
594
  }
636
595
 
637
596
  .disabled {
638
- color: var(--pui-text-disabled) !important;
597
+ color: rgb(163 163 163) !important;
639
598
  background-color: transparent !important;
640
599
  cursor: not-allowed !important;
641
600
  opacity: 0.5;
@@ -643,39 +602,39 @@
643
602
 
644
603
  .disabled:hover {
645
604
  background-color: transparent !important;
646
- color: var(--pui-text-disabled) !important;
605
+ color: rgb(163 163 163) !important;
647
606
  }
648
607
 
649
608
  :global(.dark) {
650
609
  .days-header-bar {
651
- background-color: var(--pui-color-dark-200);
610
+ background-color: #252529;
652
611
  }
653
612
 
654
613
  .day-label {
655
- color: var(--pui-color-gray-300);
614
+ color: #d1d5db;
656
615
  }
657
616
 
658
617
  .day-button:hover {
659
- background-color: var(--pui-bg-hover);
660
- color: var(--pui-color-secondary);
618
+ background-color: rgba(var(--ui-accent-rgbc), 0.1);
619
+ color: var(--ui-accent);
661
620
  }
662
621
 
663
622
  .today {
664
- background-color: var(--pui-bg-active);
665
- color: var(--pui-color-secondary);
623
+ background-color: rgba(var(--ui-accent-rgbc), 0.15);
624
+ color: var(--ui-accent);
666
625
  }
667
626
 
668
627
  .selected {
669
- background-color: var(--pui-color-secondary);
670
- color: var(--pui-color-primary);
628
+ background-color: var(--ui-accent);
629
+ color: var(--ui-primary);
671
630
  }
672
631
 
673
632
  .text-grey {
674
- color: var(--pui-color-gray-500);
633
+ color: #6b7280;
675
634
  }
676
635
 
677
636
  .disabled {
678
- color: var(--pui-color-gray-500) !important;
637
+ color: #6b7280 !important;
679
638
  background-color: transparent !important;
680
639
  cursor: not-allowed !important;
681
640
  opacity: 0.5;
@@ -683,30 +642,30 @@
683
642
 
684
643
  .disabled:hover {
685
644
  background-color: transparent !important;
686
- color: var(--pui-color-gray-500) !important;
645
+ color: #6b7280 !important;
687
646
  }
688
647
 
689
648
  .month-label.clickable:hover {
690
- background-color: var(--pui-bg-hover);
649
+ background-color: rgba(var(--ui-accent-rgbc), 0.1);
691
650
  }
692
651
 
693
652
  .year-button:hover:not(.disabled) {
694
- background-color: var(--pui-bg-hover);
695
- color: var(--pui-color-secondary);
653
+ background-color: rgba(var(--ui-accent-rgbc), 0.1);
654
+ color: var(--ui-accent);
696
655
  }
697
656
 
698
657
  .year-button.current-year {
699
- background-color: var(--pui-bg-active);
700
- color: var(--pui-color-secondary);
658
+ background-color: rgba(var(--ui-accent-rgbc), 0.15);
659
+ color: var(--ui-accent);
701
660
  }
702
661
 
703
662
  .year-button.selected {
704
- background-color: var(--pui-color-secondary);
705
- color: var(--pui-color-primary);
663
+ background-color: var(--ui-accent);
664
+ color: var(--ui-primary);
706
665
  }
707
666
 
708
667
  .year-button.disabled {
709
- color: var(--pui-color-gray-500) !important;
668
+ color: #6b7280 !important;
710
669
  }
711
670
  }
712
671
  </style>