@urbicon-ui/blocks 6.12.0 → 6.19.1

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 (59) hide show
  1. package/README.md +5 -5
  2. package/dist/components/AreaChart/AreaChart.svelte +7 -3
  3. package/dist/components/BarChart/BarChart.svelte +7 -3
  4. package/dist/components/Calendar/Calendar.svelte +46 -29
  5. package/dist/components/Calendar/CalendarAgendaView.svelte +1 -1
  6. package/dist/components/Calendar/CalendarDayView.svelte +19 -39
  7. package/dist/components/Calendar/CalendarDayView.svelte.d.ts +1 -3
  8. package/dist/components/Calendar/CalendarEventItem.svelte +0 -1
  9. package/dist/components/Calendar/CalendarGrid.svelte +12 -8
  10. package/dist/components/Calendar/CalendarHeader.svelte +2 -2
  11. package/dist/components/Calendar/CalendarMiniMonth.svelte +0 -2
  12. package/dist/components/Calendar/CalendarTimeEvent.svelte +1 -1
  13. package/dist/components/Calendar/CalendarTimeGrid.svelte +0 -3
  14. package/dist/components/Calendar/CalendarWeekGrid.svelte +1 -1
  15. package/dist/components/Calendar/calendar.context.d.ts +1 -0
  16. package/dist/components/Calendar/calendar.types.d.ts +2 -0
  17. package/dist/components/Calendar/calendar.variants.d.ts +0 -12
  18. package/dist/components/Calendar/calendar.variants.js +0 -4
  19. package/dist/components/Calendar/index.d.ts +6 -2
  20. package/dist/components/CompositionBar/CompositionBar.svelte +1 -1
  21. package/dist/components/CompositionBar/composition-bar.variants.d.ts +15 -16
  22. package/dist/components/CompositionBar/composition-bar.variants.js +4 -2
  23. package/dist/components/CompositionBar/index.d.ts +1 -1
  24. package/dist/components/DatePicker/DatePicker.svelte +5 -3
  25. package/dist/components/DatePicker/DateRangePicker.svelte +3 -3
  26. package/dist/components/DatePicker/datepicker.engine.d.ts +6 -6
  27. package/dist/components/DatePicker/datepicker.engine.js +13 -13
  28. package/dist/components/DonutChart/DonutChart.svelte +5 -3
  29. package/dist/components/LineChart/LineChart.svelte +7 -3
  30. package/dist/components/Planner/Planner.svelte +7 -3
  31. package/dist/components/Planner/PlannerHeader.svelte +1 -1
  32. package/dist/components/Planner/planner.types.d.ts +3 -0
  33. package/dist/date/compare.d.ts +8 -0
  34. package/dist/date/compare.js +15 -0
  35. package/dist/date/index.d.ts +1 -1
  36. package/dist/date/index.js +1 -1
  37. package/dist/i18n/index.d.ts +22 -14
  38. package/dist/internal/date-grid/date-grid.svelte.d.ts +18 -3
  39. package/dist/internal/date-grid/date-grid.svelte.js +60 -19
  40. package/dist/internal/date-grid/index.d.ts +2 -2
  41. package/dist/internal/date-grid/index.js +2 -2
  42. package/dist/mint/README.md +12 -9
  43. package/dist/mint/registry.js +12 -0
  44. package/dist/primitives/Badge/badge.variants.d.ts +0 -1
  45. package/dist/primitives/Badge/badge.variants.js +1 -2
  46. package/dist/primitives/Breadcrumb/Breadcrumb.svelte +1 -2
  47. package/dist/primitives/ButtonGroup/ButtonGroup.svelte +1 -1
  48. package/dist/primitives/Combobox/Combobox.svelte +1 -0
  49. package/dist/primitives/Menu/Menu.svelte +2 -2
  50. package/dist/primitives/Pagination/Pagination.svelte +10 -2
  51. package/dist/primitives/Pagination/PaginationItem.svelte +0 -2
  52. package/dist/primitives/Stepper/StepperStep.svelte +3 -1
  53. package/dist/translations/de.d.ts +11 -7
  54. package/dist/translations/de.js +12 -8
  55. package/dist/translations/en.d.ts +11 -7
  56. package/dist/translations/en.js +12 -8
  57. package/dist/utils/date.d.ts +5 -0
  58. package/dist/utils/date.js +34 -24
  59. package/package.json +3 -3
@@ -50,6 +50,8 @@ declare const _default: {
50
50
  readonly last: "Last";
51
51
  readonly page: "Page";
52
52
  readonly previous: "Previous";
53
+ readonly pageInfo: "{{label}} {{current}} of {{total}}";
54
+ readonly rangeInfo: "{{start}}–{{end}} of {{total}}";
53
55
  };
54
56
  readonly calendar: {
55
57
  readonly recurring: "Recurring event";
@@ -71,8 +73,6 @@ declare const _default: {
71
73
  readonly legend: "Legend";
72
74
  readonly yearView: "Year overview";
73
75
  readonly weekView: "Week view";
74
- readonly dayView: "Day view";
75
- readonly monthView: "Month view";
76
76
  readonly viewMonth: "Month";
77
77
  readonly viewYear: "Year";
78
78
  readonly viewWeek: "Week";
@@ -91,7 +91,6 @@ declare const _default: {
91
91
  readonly nextRange: "Next range";
92
92
  readonly today: "Today";
93
93
  readonly grid: "Planner";
94
- readonly weekNumber: "Week number";
95
94
  readonly itemCount: "{{count}} items";
96
95
  };
97
96
  readonly commandPalette: {
@@ -143,7 +142,6 @@ declare const _default: {
143
142
  readonly datepicker: {
144
143
  readonly placeholder: "Select a date...";
145
144
  readonly rangePlaceholder: "Select a date range...";
146
- readonly clear: "Clear selection";
147
145
  readonly openCalendar: "Open calendar";
148
146
  readonly invalidDate: "Invalid date";
149
147
  readonly outOfRange: "Date is outside the allowed range";
@@ -175,9 +173,15 @@ declare const _default: {
175
173
  readonly darkMode: "Dark mode";
176
174
  readonly systemTheme: "System theme";
177
175
  };
178
- readonly time: {
179
- readonly ago: "{{value}} {{unit}} ago";
180
- readonly now: "now";
176
+ readonly chart: {
177
+ readonly category: "Category";
178
+ readonly series: "Series {{index}}";
179
+ readonly segment: "Segment";
180
+ readonly value: "Value";
181
+ readonly share: "Share";
182
+ };
183
+ readonly stepper: {
184
+ readonly optional: "Optional";
181
185
  };
182
186
  };
183
187
  export default _default;
@@ -49,7 +49,9 @@ export default {
49
49
  first: 'First',
50
50
  last: 'Last',
51
51
  page: 'Page',
52
- previous: 'Previous'
52
+ previous: 'Previous',
53
+ pageInfo: '{{label}} {{current}} of {{total}}',
54
+ rangeInfo: '{{start}}–{{end}} of {{total}}'
53
55
  },
54
56
  calendar: {
55
57
  recurring: 'Recurring event',
@@ -71,8 +73,6 @@ export default {
71
73
  legend: 'Legend',
72
74
  yearView: 'Year overview',
73
75
  weekView: 'Week view',
74
- dayView: 'Day view',
75
- monthView: 'Month view',
76
76
  viewMonth: 'Month',
77
77
  viewYear: 'Year',
78
78
  viewWeek: 'Week',
@@ -91,7 +91,6 @@ export default {
91
91
  nextRange: 'Next range',
92
92
  today: 'Today',
93
93
  grid: 'Planner',
94
- weekNumber: 'Week number',
95
94
  itemCount: '{{count}} items'
96
95
  },
97
96
  commandPalette: {
@@ -143,7 +142,6 @@ export default {
143
142
  datepicker: {
144
143
  placeholder: 'Select a date...',
145
144
  rangePlaceholder: 'Select a date range...',
146
- clear: 'Clear selection',
147
145
  openCalendar: 'Open calendar',
148
146
  invalidDate: 'Invalid date',
149
147
  outOfRange: 'Date is outside the allowed range',
@@ -175,8 +173,14 @@ export default {
175
173
  darkMode: 'Dark mode',
176
174
  systemTheme: 'System theme'
177
175
  },
178
- time: {
179
- ago: '{{value}} {{unit}} ago',
180
- now: 'now'
176
+ chart: {
177
+ category: 'Category',
178
+ series: 'Series {{index}}',
179
+ segment: 'Segment',
180
+ value: 'Value',
181
+ share: 'Share'
182
+ },
183
+ stepper: {
184
+ optional: 'Optional'
181
185
  }
182
186
  };
@@ -6,6 +6,11 @@
6
6
  * example because the database driver serialises timestamps that way),
7
7
  * use these helpers to convert in both directions instead of redoing the
8
8
  * arithmetic at every form site.
9
+ *
10
+ * The strict `YYYY-MM-DD` ↔ `Date` core is not reimplemented here: it lives in
11
+ * `../date/range` (`toIso` / `isoToDate`, the Layer-0 source of truth). These
12
+ * tolerant form helpers delegate to it and only add the tolerant shape rules
13
+ * (empty/undefined → nullish, 1-digit month/day, epoch-number coercion).
9
14
  */
10
15
  /** Shared union for utilities that accept any common "date-ish" input. */
11
16
  export type DateInput = Date | string | number | null | undefined;
@@ -6,7 +6,13 @@
6
6
  * example because the database driver serialises timestamps that way),
7
7
  * use these helpers to convert in both directions instead of redoing the
8
8
  * arithmetic at every form site.
9
+ *
10
+ * The strict `YYYY-MM-DD` ↔ `Date` core is not reimplemented here: it lives in
11
+ * `../date/range` (`toIso` / `isoToDate`, the Layer-0 source of truth). These
12
+ * tolerant form helpers delegate to it and only add the tolerant shape rules
13
+ * (empty/undefined → nullish, 1-digit month/day, epoch-number coercion).
9
14
  */
15
+ import { isoToDate, toIso } from '../date/range.js';
10
16
  /** Detect a finite, valid `Date` instance. */
11
17
  function isValidDate(d) {
12
18
  return !Number.isNaN(d.getTime());
@@ -48,15 +54,20 @@ export function coerceToDate(input) {
48
54
  return undefined;
49
55
  const dateOnly = trimmed.match(DATE_ONLY_RE);
50
56
  if (dateOnly) {
51
- const year = Number(dateOnly[1]);
52
- const month = Number(dateOnly[2]) - 1;
53
- const day = Number(dateOnly[3]);
54
- const local = new Date(year, month, day);
55
- if (local.getFullYear() === year && local.getMonth() === month && local.getDate() === day) {
56
- return local;
57
+ // Pad to canonical YYYY-MM-DD so 1-digit month/day stays tolerated, then
58
+ // delegate the strict parse + day-existence check to `isoToDate`.
59
+ const canonical = `${dateOnly[1]}-${dateOnly[2].padStart(2, '0')}-${dateOnly[3].padStart(2, '0')}`;
60
+ try {
61
+ return isoToDate(canonical);
62
+ }
63
+ catch (err) {
64
+ // isoToDate throws a RangeError only for a non-existent day; anything
65
+ // else is unexpected and should surface, not be mislabelled here.
66
+ if (!(err instanceof RangeError))
67
+ throw err;
68
+ console.warn('[DatePicker] coerceToDate rejected out-of-range date-only string', { input });
69
+ return undefined;
57
70
  }
58
- console.warn('[DatePicker] coerceToDate rejected out-of-range date-only string', { input });
59
- return undefined;
60
71
  }
61
72
  const date = new Date(trimmed);
62
73
  if (!isValidDate(date)) {
@@ -87,12 +98,7 @@ export function coerceToDate(input) {
87
98
  */
88
99
  export function toDateInputValue(d) {
89
100
  const date = coerceToDate(d);
90
- if (!date)
91
- return '';
92
- const year = date.getFullYear();
93
- const month = String(date.getMonth() + 1).padStart(2, '0');
94
- const day = String(date.getDate()).padStart(2, '0');
95
- return `${year}-${month}-${day}`;
101
+ return date ? toIso(date) : '';
96
102
  }
97
103
  /**
98
104
  * Parse a `YYYY-MM-DD` (or any other `Date`-parseable) string into a
@@ -109,17 +115,21 @@ export function fromDateInputValue(s) {
109
115
  return null;
110
116
  const dateOnly = trimmed.match(DATE_ONLY_RE);
111
117
  if (dateOnly) {
112
- const year = Number(dateOnly[1]);
113
- const month = Number(dateOnly[2]) - 1;
114
- const day = Number(dateOnly[3]);
115
- const date = new Date(year, month, day);
116
- if (date.getFullYear() === year && date.getMonth() === month && date.getDate() === day) {
117
- return date;
118
+ // Same delegated strict parse as `coerceToDate`, but nullish on failure.
119
+ const canonical = `${dateOnly[1]}-${dateOnly[2].padStart(2, '0')}-${dateOnly[3].padStart(2, '0')}`;
120
+ try {
121
+ return isoToDate(canonical);
122
+ }
123
+ catch (err) {
124
+ // isoToDate throws a RangeError only for a non-existent day; anything
125
+ // else is unexpected and should surface, not be mislabelled here.
126
+ if (!(err instanceof RangeError))
127
+ throw err;
128
+ console.warn('[DatePicker] fromDateInputValue rejected out-of-range date-only string', {
129
+ input: s
130
+ });
131
+ return null;
118
132
  }
119
- console.warn('[DatePicker] fromDateInputValue rejected out-of-range date-only string', {
120
- input: s
121
- });
122
- return null;
123
133
  }
124
134
  const date = new Date(trimmed);
125
135
  if (!isValidDate(date)) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@urbicon-ui/blocks",
3
- "version": "6.12.0",
3
+ "version": "6.19.1",
4
4
  "description": "Svelte 5 UI component library with Tailwind CSS 4, OKLCH design tokens and zero runtime dependencies",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -91,8 +91,8 @@
91
91
  "@sveltejs/package": "^2.5.8",
92
92
  "@sveltejs/vite-plugin-svelte": "^7.0.0",
93
93
  "@tailwindcss/vite": "^4.3.1",
94
- "@urbicon-ui/i18n": "6.12.0",
95
- "@urbicon-ui/shared-types": "6.12.0",
94
+ "@urbicon-ui/i18n": "6.19.1",
95
+ "@urbicon-ui/shared-types": "6.19.1",
96
96
  "prettier": "^3.8.4",
97
97
  "prettier-plugin-svelte": "^4.1.1",
98
98
  "prettier-plugin-tailwindcss": "^0.8.0",