@warp-ds/elements 2.3.0-next.1 → 2.3.0-next.3

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 (196) hide show
  1. package/dist/custom-elements.json +3295 -403
  2. package/dist/index.d.ts +484 -0
  3. package/dist/packages/combobox/combobox.react.stories.d.ts +28 -0
  4. package/dist/packages/combobox/combobox.react.stories.js +90 -0
  5. package/dist/packages/combobox/combobox.stories.d.ts +18 -0
  6. package/dist/packages/combobox/combobox.stories.js +117 -0
  7. package/dist/packages/combobox/index.d.ts +85 -0
  8. package/dist/packages/combobox/index.js +2492 -0
  9. package/dist/packages/combobox/index.js.map +7 -0
  10. package/dist/packages/combobox/locales/da/messages.d.mts +1 -0
  11. package/dist/packages/combobox/locales/da/messages.mjs +1 -0
  12. package/dist/packages/combobox/locales/en/messages.d.mts +1 -0
  13. package/dist/packages/combobox/locales/en/messages.mjs +1 -0
  14. package/dist/packages/combobox/locales/fi/messages.d.mts +1 -0
  15. package/dist/packages/combobox/locales/fi/messages.mjs +1 -0
  16. package/dist/packages/combobox/locales/nb/messages.d.mts +1 -0
  17. package/dist/packages/combobox/locales/nb/messages.mjs +1 -0
  18. package/dist/packages/combobox/locales/sv/messages.d.mts +1 -0
  19. package/dist/packages/combobox/locales/sv/messages.mjs +1 -0
  20. package/dist/packages/combobox/react.d.ts +7 -0
  21. package/dist/packages/combobox/react.js +17 -0
  22. package/dist/packages/combobox/styles.d.ts +1 -0
  23. package/dist/packages/combobox/styles.js +2 -0
  24. package/dist/packages/datepicker/DatePicker.test.d.ts +2 -0
  25. package/dist/packages/datepicker/DatePicker.test.js +69 -0
  26. package/dist/packages/datepicker/datepicker.d.ts +102 -0
  27. package/dist/packages/datepicker/datepicker.js +2785 -0
  28. package/dist/packages/datepicker/datepicker.js.map +7 -0
  29. package/dist/packages/datepicker/datepicker.react.stories.d.ts +18 -0
  30. package/dist/packages/datepicker/datepicker.react.stories.js +26 -0
  31. package/dist/packages/datepicker/datepicker.stories.d.ts +12 -0
  32. package/dist/packages/datepicker/datepicker.stories.js +51 -0
  33. package/dist/packages/datepicker/datepicker.test.d.ts +2 -0
  34. package/dist/packages/datepicker/datepicker.test.js +62 -0
  35. package/dist/packages/datepicker/index.d.ts +1 -0
  36. package/dist/packages/datepicker/index.js +1 -0
  37. package/dist/packages/datepicker/locales/da/messages.d.mts +1 -0
  38. package/dist/packages/datepicker/locales/da/messages.mjs +1 -0
  39. package/dist/packages/datepicker/locales/en/messages.d.mts +1 -0
  40. package/dist/packages/datepicker/locales/en/messages.mjs +1 -0
  41. package/dist/packages/datepicker/locales/fi/messages.d.mts +1 -0
  42. package/dist/packages/datepicker/locales/fi/messages.mjs +1 -0
  43. package/dist/packages/datepicker/locales/nb/messages.d.mts +1 -0
  44. package/dist/packages/datepicker/locales/nb/messages.mjs +1 -0
  45. package/dist/packages/datepicker/locales/sv/messages.d.mts +1 -0
  46. package/dist/packages/datepicker/locales/sv/messages.mjs +1 -0
  47. package/dist/packages/datepicker/react.d.ts +5 -0
  48. package/dist/packages/datepicker/react.js +15 -0
  49. package/dist/packages/datepicker/styles/w-datepicker-calendar.styles.d.ts +1 -0
  50. package/dist/packages/datepicker/styles/w-datepicker-calendar.styles.js +15 -0
  51. package/dist/packages/datepicker/styles/w-datepicker-day.styles.d.ts +1 -0
  52. package/dist/packages/datepicker/styles/w-datepicker-day.styles.js +64 -0
  53. package/dist/packages/datepicker/styles/w-datepicker-month.styles.d.ts +1 -0
  54. package/dist/packages/datepicker/styles/w-datepicker-month.styles.js +72 -0
  55. package/dist/packages/datepicker/styles/w-datepicker.styles.d.ts +1 -0
  56. package/dist/packages/datepicker/styles/w-datepicker.styles.js +101 -0
  57. package/dist/packages/datepicker/utils.d.ts +13 -0
  58. package/dist/packages/datepicker/utils.js +28 -0
  59. package/dist/packages/dead-toggle/dead-toggle.react.stories.d.ts +15 -0
  60. package/dist/packages/dead-toggle/dead-toggle.react.stories.js +34 -0
  61. package/dist/packages/dead-toggle/dead-toggle.stories.d.ts +14 -0
  62. package/dist/packages/dead-toggle/dead-toggle.stories.js +45 -0
  63. package/dist/packages/dead-toggle/dead-toggle.test.d.ts +1 -0
  64. package/dist/packages/dead-toggle/dead-toggle.test.js +9 -0
  65. package/dist/packages/dead-toggle/index.d.ts +17 -0
  66. package/dist/packages/dead-toggle/index.js +2548 -0
  67. package/dist/packages/dead-toggle/index.js.map +7 -0
  68. package/dist/packages/dead-toggle/react.d.ts +2 -0
  69. package/dist/packages/dead-toggle/react.js +11 -0
  70. package/dist/packages/link/index.js +2640 -93
  71. package/dist/packages/link/index.js.map +7 -0
  72. package/dist/packages/link/link.react.stories.d.ts +21 -0
  73. package/dist/packages/link/link.react.stories.js +96 -0
  74. package/dist/packages/link/link.stories.d.ts +20 -0
  75. package/dist/packages/link/link.stories.js +110 -0
  76. package/dist/packages/link/link.test.d.ts +1 -0
  77. package/dist/packages/link/link.test.js +9 -0
  78. package/dist/packages/link/react.d.ts +2 -0
  79. package/dist/packages/link/react.js +11 -0
  80. package/dist/packages/pageindicator/index.d.ts +10 -0
  81. package/dist/packages/pageindicator/index.js +32 -0
  82. package/dist/packages/pageindicator/index.js.map +7 -0
  83. package/dist/packages/pageindicator/pageindicator.react.stories.d.ts +19 -0
  84. package/dist/packages/pageindicator/pageindicator.react.stories.js +20 -0
  85. package/dist/packages/pageindicator/pageindicator.stories.d.ts +32 -0
  86. package/dist/packages/pageindicator/pageindicator.stories.js +71 -0
  87. package/dist/packages/pageindicator/react.d.ts +2 -0
  88. package/dist/packages/pageindicator/react.js +11 -0
  89. package/dist/packages/pageindicator/style.d.ts +1 -0
  90. package/dist/packages/pageindicator/style.js +26 -0
  91. package/dist/packages/rip-and-tear-checkbox/checkbox.d.ts +66 -0
  92. package/dist/packages/rip-and-tear-checkbox/checkbox.js +2592 -0
  93. package/dist/packages/rip-and-tear-checkbox/checkbox.js.map +7 -0
  94. package/dist/packages/rip-and-tear-checkbox/checkbox.stories.d.ts +8 -0
  95. package/dist/packages/rip-and-tear-checkbox/checkbox.stories.js +11 -0
  96. package/dist/packages/rip-and-tear-checkbox/index.d.ts +1 -0
  97. package/dist/packages/rip-and-tear-checkbox/index.js +4 -0
  98. package/dist/packages/rip-and-tear-checkbox/react.d.ts +5 -0
  99. package/dist/packages/rip-and-tear-checkbox/react.js +15 -0
  100. package/dist/packages/rip-and-tear-checkbox/rip-and-tear-checkbox.react.stories.d.ts +12 -0
  101. package/dist/packages/rip-and-tear-checkbox/rip-and-tear-checkbox.react.stories.js +10 -0
  102. package/dist/packages/rip-and-tear-checkbox/styles.d.ts +0 -0
  103. package/dist/packages/rip-and-tear-checkbox/styles.js +0 -0
  104. package/dist/packages/rip-and-tear-radio/base-element.d.ts +46 -0
  105. package/dist/packages/rip-and-tear-radio/base-element.js +100 -0
  106. package/dist/packages/rip-and-tear-radio/custom-error-validator.d.ts +6 -0
  107. package/dist/packages/rip-and-tear-radio/custom-error-validator.js +22 -0
  108. package/dist/packages/rip-and-tear-radio/form-associated-element.d.ts +103 -0
  109. package/dist/packages/rip-and-tear-radio/form-associated-element.js +282 -0
  110. package/dist/packages/rip-and-tear-radio/host-styles.d.ts +1 -0
  111. package/dist/packages/rip-and-tear-radio/host-styles.js +12 -0
  112. package/dist/packages/rip-and-tear-radio/index.d.ts +1 -0
  113. package/dist/packages/rip-and-tear-radio/index.js +6 -0
  114. package/dist/packages/rip-and-tear-radio/invalid.d.ts +8 -0
  115. package/dist/packages/rip-and-tear-radio/invalid.js +5 -0
  116. package/dist/packages/rip-and-tear-radio/math.d.ts +1 -0
  117. package/dist/packages/rip-and-tear-radio/math.js +4 -0
  118. package/dist/packages/rip-and-tear-radio/radio-group-styles.d.ts +1 -0
  119. package/dist/packages/rip-and-tear-radio/radio-group-styles.js +59 -0
  120. package/dist/packages/rip-and-tear-radio/radio-group-styles.js.map +7 -0
  121. package/dist/packages/rip-and-tear-radio/radio-group.d.ts +72 -0
  122. package/dist/packages/rip-and-tear-radio/radio-group.js +2649 -0
  123. package/dist/packages/rip-and-tear-radio/radio-group.js.map +7 -0
  124. package/dist/packages/rip-and-tear-radio/radio-styles.d.ts +0 -0
  125. package/dist/packages/rip-and-tear-radio/radio-styles.js +1 -0
  126. package/dist/packages/rip-and-tear-radio/radio-styles.js.map +7 -0
  127. package/dist/packages/rip-and-tear-radio/radio.d.ts +38 -0
  128. package/dist/packages/rip-and-tear-radio/radio.js +2563 -0
  129. package/dist/packages/rip-and-tear-radio/radio.js.map +7 -0
  130. package/dist/packages/rip-and-tear-radio/radio.stories.d.ts +8 -0
  131. package/dist/packages/rip-and-tear-radio/radio.stories.js +2654 -0
  132. package/dist/packages/rip-and-tear-radio/radio.stories.js.map +7 -0
  133. package/dist/packages/rip-and-tear-radio/react.d.ts +9 -0
  134. package/dist/packages/rip-and-tear-radio/react.js +22 -0
  135. package/dist/packages/rip-and-tear-radio/required-validator.d.ts +11 -0
  136. package/dist/packages/rip-and-tear-radio/required-validator.js +34 -0
  137. package/dist/packages/rip-and-tear-radio/rip-and-tear-radio.react.stories.d.ts +9 -0
  138. package/dist/packages/rip-and-tear-radio/rip-and-tear-radio.react.stories.js +10 -0
  139. package/dist/packages/rip-and-tear-radio/slot.d.ts +20 -0
  140. package/dist/packages/rip-and-tear-radio/slot.js +71 -0
  141. package/dist/packages/rip-and-tear-radio/watch.d.ts +26 -0
  142. package/dist/packages/rip-and-tear-radio/watch.js +39 -0
  143. package/dist/packages/steps/index.d.ts +36 -0
  144. package/dist/packages/steps/index.js +2465 -0
  145. package/dist/packages/steps/index.js.map +7 -0
  146. package/dist/packages/steps/locales/da/messages.d.mts +1 -0
  147. package/dist/packages/steps/locales/da/messages.mjs +1 -0
  148. package/dist/packages/steps/locales/en/messages.d.mts +1 -0
  149. package/dist/packages/steps/locales/en/messages.mjs +1 -0
  150. package/dist/packages/steps/locales/fi/messages.d.mts +1 -0
  151. package/dist/packages/steps/locales/fi/messages.mjs +1 -0
  152. package/dist/packages/steps/locales/nb/messages.d.mts +1 -0
  153. package/dist/packages/steps/locales/nb/messages.mjs +1 -0
  154. package/dist/packages/steps/locales/sv/messages.d.mts +1 -0
  155. package/dist/packages/steps/locales/sv/messages.mjs +1 -0
  156. package/dist/packages/steps/react.d.ts +3 -0
  157. package/dist/packages/steps/react.js +16 -0
  158. package/dist/packages/steps/steps.react.stories.d.ts +15 -0
  159. package/dist/packages/steps/steps.react.stories.js +112 -0
  160. package/dist/packages/steps/steps.stories.d.ts +12 -0
  161. package/dist/packages/steps/steps.stories.js +172 -0
  162. package/dist/packages/steps/styles.d.ts +1 -0
  163. package/dist/packages/steps/styles.js +2 -0
  164. package/dist/packages/switch/index.d.ts +15 -0
  165. package/dist/packages/switch/index.js +2455 -0
  166. package/dist/packages/switch/index.js.map +7 -0
  167. package/dist/packages/switch/react.d.ts +5 -0
  168. package/dist/packages/switch/react.js +15 -0
  169. package/dist/packages/switch/styles.d.ts +1 -0
  170. package/dist/packages/switch/styles.js +2 -0
  171. package/dist/packages/switch/switch.react.stories.d.ts +15 -0
  172. package/dist/packages/switch/switch.react.stories.js +29 -0
  173. package/dist/packages/switch/switch.stories.d.ts +9 -0
  174. package/dist/packages/switch/switch.stories.js +34 -0
  175. package/dist/packages/tabs/index.d.ts +4 -0
  176. package/dist/packages/tabs/index.js +3 -0
  177. package/dist/packages/tabs/react.d.ts +12 -0
  178. package/dist/packages/tabs/react.js +31 -0
  179. package/dist/packages/tabs/styles.d.ts +1 -0
  180. package/dist/packages/tabs/styles.js +2 -0
  181. package/dist/packages/tabs/tab-panel.d.ts +20 -0
  182. package/dist/packages/tabs/tab-panel.js +51 -0
  183. package/dist/packages/tabs/tab.d.ts +18 -0
  184. package/dist/packages/tabs/tab.js +2463 -0
  185. package/dist/packages/tabs/tab.js.map +7 -0
  186. package/dist/packages/tabs/tabs.d.ts +40 -0
  187. package/dist/packages/tabs/tabs.js +2448 -0
  188. package/dist/packages/tabs/tabs.js.map +7 -0
  189. package/dist/packages/tabs/tabs.react.stories.d.ts +15 -0
  190. package/dist/packages/tabs/tabs.react.stories.js +51 -0
  191. package/dist/packages/tabs/tabs.stories.d.ts +8 -0
  192. package/dist/packages/tabs/tabs.stories.js +84 -0
  193. package/dist/packages/toggle-styles.d.ts +1 -0
  194. package/dist/packages/toggle-styles.js +109 -0
  195. package/dist/web-types.json +496 -1
  196. package/package.json +184 -3
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ import { StoryObj } from '@storybook/react';
3
+ import { DatePicker } from './react';
4
+ declare const _default: {
5
+ title: string;
6
+ render(args: Omit<React.HTMLAttributes<import("./datepicker").WarpDatepicker>, "label" | "onchange" | "onChange" | "render" | "renderOptions" | "connectedCallback" | "disconnectedCallback" | "renderRoot" | "isUpdatePending" | "hasUpdated" | "addController" | "removeController" | "attributeChangedCallback" | "requestUpdate" | "updateComplete" | "form" | "input" | "name" | "value" | "updated" | "validationTarget" | "internals" | "showError" | "validationMessage" | "validity" | "validationComplete" | "checkValidity" | "formResetCallback" | "resetFormControl" | "valueChangedCallback" | "validityCallback" | "validationMessageCallback" | "setValue" | "shouldFormValueUpdate" | "month" | "locale" | "calendar" | "wrapper" | "headerFormat" | "weekdayFormat" | "isDayDisabled" | "dayFormat" | "isCalendarOpen" | "navigationDate" | "selectedDate" | "weeks" | "toggleButton" | "previousMonthButton" | "todayCell" | "selectedCell"> & {
7
+ onChange?: (e: Event) => void;
8
+ onchange?: (e: Event) => void;
9
+ } & Partial<Omit<import("./datepicker").WarpDatepicker, keyof HTMLElement>> & React.RefAttributes<import("./datepicker").WarpDatepicker>): React.JSX.Element;
10
+ component: import("@lit/react").ReactWebComponent<import("./datepicker").WarpDatepicker, {
11
+ onChange: string;
12
+ onchange: string;
13
+ }>;
14
+ };
15
+ export default _default;
16
+ export type Story = StoryObj<typeof DatePicker>;
17
+ export declare const Default: Story;
18
+ export declare const DisableCalendarDates: Story;
@@ -0,0 +1,26 @@
1
+ import React from 'react';
2
+ import { DatePicker } from './react';
3
+ export default {
4
+ title: 'Forms/Datepicker',
5
+ render(args) {
6
+ return (React.createElement("div", { style: { minHeight: '400px' } },
7
+ React.createElement(DatePicker, { ...args })));
8
+ },
9
+ component: DatePicker,
10
+ };
11
+ export const Default = {
12
+ args: {
13
+ label: 'Dato',
14
+ lang: 'nb',
15
+ },
16
+ };
17
+ export const DisableCalendarDates = {
18
+ args: {
19
+ label: 'Dato',
20
+ lang: 'nb',
21
+ },
22
+ render(args) {
23
+ return (React.createElement("div", { style: { minHeight: '400px' } },
24
+ React.createElement(DatePicker, { ...args, isDayDisabled: (day) => day.getDay() === 0 })));
25
+ },
26
+ };
@@ -0,0 +1,12 @@
1
+ import type { Meta, StoryObj } from '@storybook/web-components-vite';
2
+ import '../button/index.js';
3
+ import type { WarpDatepicker } from './index.js';
4
+ import './index.js';
5
+ declare const args: Partial<WarpDatepicker> & {
6
+ [key: string]: any;
7
+ };
8
+ declare const meta: Meta<typeof args>;
9
+ export default meta;
10
+ type Story = StoryObj<typeof args>;
11
+ export declare const Default: Story;
12
+ export declare const DisableCalendarDates: Story;
@@ -0,0 +1,51 @@
1
+ import { spread } from '@open-wc/lit-helpers';
2
+ import { getStorybookHelpers } from '@wc-toolkit/storybook-helpers';
3
+ import { html } from 'lit';
4
+ import { prespread } from '../../.storybook/utilities.js';
5
+ import '../button/index.js';
6
+ import './index.js';
7
+ const { events, args, argTypes } = getStorybookHelpers('w-datepicker');
8
+ const meta = {
9
+ title: 'Forms/Datepicker',
10
+ render(args) {
11
+ return html `
12
+ <!-- Workaround for Storybook's overflow hidden -->
13
+ <div style="min-height: 400px">
14
+ <w-datepicker ${spread(prespread(args))}></w-datepicker>
15
+ </div>
16
+ `;
17
+ },
18
+ args,
19
+ argTypes,
20
+ parameters: {
21
+ actions: {
22
+ handles: events,
23
+ },
24
+ },
25
+ };
26
+ export default meta;
27
+ export const Default = {
28
+ args: {
29
+ label: 'Dato',
30
+ lang: 'nb',
31
+ },
32
+ };
33
+ export const DisableCalendarDates = {
34
+ args: {
35
+ label: 'Dato',
36
+ lang: 'nb',
37
+ },
38
+ render(args) {
39
+ return html `
40
+ <!-- Workaround for Storybook's overflow hidden -->
41
+ <div style="min-height: 400px">
42
+ <w-datepicker ${spread(prespread(args))}></w-datepicker>
43
+ </div>
44
+ <script type="module">
45
+ const datePicker = document.querySelector('w-datepicker');
46
+ // No working on Sundays!
47
+ datePicker.isDayDisabled = (day) => day.getDay() === 0;
48
+ </script>
49
+ `;
50
+ },
51
+ };
@@ -0,0 +1,2 @@
1
+ import '../button/index.js';
2
+ import './index.js';
@@ -0,0 +1,62 @@
1
+ import { server, userEvent } from '@vitest/browser/context';
2
+ import { html } from 'lit';
3
+ import { expect, test } from 'vitest';
4
+ import { render } from 'vitest-browser-lit';
5
+ import '../button/index.js';
6
+ import './index.js';
7
+ test('can pick a date using a pointer', async () => {
8
+ const component = html `
9
+ <form data-testid="flight">
10
+ <w-datepicker label="From date" name="from"></w-datepicker>
11
+ </form>
12
+ `;
13
+ const page = render(component);
14
+ await expect.element(page.getByLabelText('From date')).not.toHaveValue();
15
+ await expect.element(page.getByTestId('calendar').query()).not.toBeVisible();
16
+ await page.getByRole('button').click({ force: true });
17
+ await expect.element(page.getByTestId('calendar')).toBeVisible();
18
+ await page.getByRole('gridcell').nth(15).click();
19
+ await expect
20
+ .element(page.getByTestId('calendar').query(), { message: 'expected calendar to close after clicking a date' })
21
+ .not.toBeVisible();
22
+ await expect.element(page.getByLabelText('From date')).toHaveValue();
23
+ const formData = new FormData(page.getByTestId('flight').element());
24
+ expect(formData.get('from')).toBeTruthy();
25
+ });
26
+ test.skipIf(server.browser === 'firefox')('can pick a date using a keyboard', async () => {
27
+ const component = html `
28
+ <form data-testid="flight">
29
+ <w-datepicker label="From date" name="from"></w-datepicker>
30
+ </form>
31
+ `;
32
+ const page = render(component);
33
+ await expect.element(page.getByLabelText('From date')).not.toHaveValue();
34
+ await expect.element(page.getByTestId('calendar').query()).not.toBeVisible();
35
+ const toggle = page.getByRole('button').element();
36
+ toggle.focus();
37
+ await userEvent.keyboard('[Enter]');
38
+ await expect.element(page.getByTestId('calendar')).toBeVisible();
39
+ page.getByRole('gridcell').nth(15).element().focus();
40
+ await userEvent.keyboard('[Enter]');
41
+ await expect
42
+ .element(page.getByTestId('calendar').query(), { message: 'expected calendar to close after clicking a date' })
43
+ .not.toBeVisible();
44
+ await expect.element(page.getByLabelText('From date')).toHaveValue();
45
+ const formData = new FormData(page.getByTestId('flight').element());
46
+ expect(formData.get('from')).toBeTruthy();
47
+ });
48
+ test('can pick a date by typing in the input field', async () => {
49
+ const component = html `
50
+ <form data-testid="flight">
51
+ <w-datepicker label="From date" name="from" lang="nb"></w-datepicker>
52
+ </form>
53
+ `;
54
+ const page = render(component);
55
+ await expect.element(page.getByLabelText('From date')).not.toHaveValue();
56
+ const toggle = page.getByLabelText('From date').element();
57
+ toggle.focus();
58
+ await page.getByLabelText('From date').fill('2025-01-01');
59
+ await expect.element(page.getByLabelText('From date')).toHaveValue();
60
+ const formData = new FormData(page.getByTestId('flight').element());
61
+ expect(formData.get('from')).toBeTruthy();
62
+ });
@@ -0,0 +1 @@
1
+ export * from './datepicker.js';
@@ -0,0 +1 @@
1
+ export * from './datepicker.js';
@@ -0,0 +1 @@
1
+ export const messages: any;
@@ -0,0 +1 @@
1
+ /*eslint-disable*/ export const messages = JSON.parse("{\"datepicker.toggle.changeDate\":[\"Change date, \",[\"currentDate\"]],\"datepicker.toggle.chooseDate\":[\"Choose date\"],\"datepicker.calendar.roleDescription\":[\"Date picker\"],\"datepicker.calendar.nextMonth\":[\"Next month\"],\"datepicker.calendar.previousMonth\":[\"Previous month\"]}");
@@ -0,0 +1 @@
1
+ export const messages: any;
@@ -0,0 +1 @@
1
+ /*eslint-disable*/ export const messages = JSON.parse("{\"datepicker.toggle.changeDate\":[\"Change date, \",[\"currentDate\"]],\"datepicker.toggle.chooseDate\":[\"Choose date\"],\"datepicker.calendar.roleDescription\":[\"Date picker\"],\"datepicker.calendar.nextMonth\":[\"Next month\"],\"datepicker.calendar.previousMonth\":[\"Previous month\"]}");
@@ -0,0 +1 @@
1
+ export const messages: any;
@@ -0,0 +1 @@
1
+ /*eslint-disable*/ export const messages = JSON.parse("{\"datepicker.toggle.changeDate\":[\"Change date, \",[\"currentDate\"]],\"datepicker.toggle.chooseDate\":[\"Choose date\"],\"datepicker.calendar.roleDescription\":[\"Date picker\"],\"datepicker.calendar.nextMonth\":[\"Next month\"],\"datepicker.calendar.previousMonth\":[\"Previous month\"]}");
@@ -0,0 +1 @@
1
+ export const messages: any;
@@ -0,0 +1 @@
1
+ /*eslint-disable*/ export const messages = JSON.parse("{\"datepicker.toggle.changeDate\":[\"Endre dato, \",[\"currentDate\"]],\"datepicker.toggle.chooseDate\":[\"Velg dato\"],\"datepicker.calendar.roleDescription\":[\"datovelger\"],\"datepicker.calendar.nextMonth\":[\"Gå til neste måned\"],\"datepicker.calendar.previousMonth\":[\"Gå til forrige måned\"]}");
@@ -0,0 +1 @@
1
+ export const messages: any;
@@ -0,0 +1 @@
1
+ /*eslint-disable*/ export const messages = JSON.parse("{\"datepicker.toggle.changeDate\":[\"Change date, \",[\"currentDate\"]],\"datepicker.toggle.chooseDate\":[\"Choose date\"],\"datepicker.calendar.roleDescription\":[\"Date picker\"],\"datepicker.calendar.nextMonth\":[\"Next month\"],\"datepicker.calendar.previousMonth\":[\"Previous month\"]}");
@@ -0,0 +1,5 @@
1
+ import { WarpDatepicker } from './datepicker';
2
+ export declare const DatePicker: import("@lit/react").ReactWebComponent<WarpDatepicker, {
3
+ onChange: string;
4
+ onchange: string;
5
+ }>;
@@ -0,0 +1,15 @@
1
+ import { LitElement } from 'lit';
2
+ import { createComponent } from '@lit/react';
3
+ import React from 'react';
4
+ // decouple from CDN by providing a dummy class
5
+ class Component extends LitElement {
6
+ }
7
+ export const DatePicker = createComponent({
8
+ tagName: 'w-datepicker',
9
+ elementClass: Component,
10
+ react: React,
11
+ events: {
12
+ onChange: 'change',
13
+ onchange: 'change',
14
+ },
15
+ });
@@ -0,0 +1 @@
1
+ export declare const wDatepickerCalendarStyles: import("lit").CSSResult;
@@ -0,0 +1,15 @@
1
+ import { css } from 'lit';
2
+ export const wDatepickerCalendarStyles = css `
3
+ .w-datepicker__calendar {
4
+ --_calendar-border-color: var(--calendar-border-color, initial);
5
+ --_calendar-border-style: var(--calendar-border-style, none);
6
+ --_calendar-border-width: var(--calendar-border-width, 0);
7
+ --_calendar-border-radius: var(--calendar-border-radius, 0);
8
+ position: relative;
9
+ z-index: 30;
10
+
11
+ border: var(--_calendar-border-width) var(--_calendar-border-style) var(--_calendar-border-color);
12
+ border-radius: var(--_calendar-border-radius);
13
+ padding: 16px;
14
+ }
15
+ `;
@@ -0,0 +1 @@
1
+ export declare const wDatepickerDayStyles: import("lit").CSSResult;
@@ -0,0 +1,64 @@
1
+ import { css } from 'lit';
2
+ export const wDatepickerDayStyles = css `
3
+ /* === Day Cell === */
4
+ .w-datepicker__day {
5
+ /* No longer in use? */
6
+ --_day-in-range-background: var(--day-in-range-background, var(--w-s-color-background-primary-subtle-active));
7
+
8
+ text-align: center;
9
+ cursor: pointer;
10
+ outline: none;
11
+ position: relative;
12
+
13
+ color: var(--day-color, var(--w-s-color-text));
14
+ background-color: var(--day-background, transparent);
15
+ width: var(--day-width, 40px);
16
+ height: var(--day-height, 40px);
17
+ padding: var(--day-padding, 0);
18
+ font-weight: var(--day-font-weight, normal);
19
+ font-size: var(--w-font-size-s);
20
+ line-height: var(--w-line-height-s);
21
+ border-radius: var(--day-border-radius, 50%);
22
+ }
23
+
24
+ .w-datepicker__day:hover {
25
+ --day-color: var(--w-s-color-text);
26
+ --day-background: var(--w-s-color-background-hover);
27
+ --day-border-radius: 50%;
28
+ }
29
+ .w-datepicker__day:active {
30
+ --day-color: var(--w-s-color-text);
31
+ --day-background: var(--w-s-color-background-active);
32
+ --day-border-radius: 50%;
33
+ }
34
+
35
+ .w-datepicker__day:focus-visible {
36
+ text-decoration: none;
37
+ outline: 2px solid var(--w-s-color-border-focus);
38
+ outline-offset: var(--w-outline-offset, -2px);
39
+ }
40
+
41
+ /* === Day variants === */
42
+ .w-datepicker__day--today {
43
+ --day-font-weight: bold;
44
+ }
45
+
46
+ .w-datepicker__day--selected {
47
+ --day-background: var(--w-s-color-background-primary);
48
+ --day-color: var(--w-s-color-text-inverted);
49
+ --day-font-weight: bold;
50
+ }
51
+ .w-datepicker__day--selected:hover,
52
+ .w-datepicker__day--selected:focus-visible {
53
+ --day-background: var(--w-s-color-background-primary-hover);
54
+ --day-color: var(--w-s-color-text-inverted);
55
+ --day-font-weight: bold;
56
+ }
57
+
58
+ .w-datepicker__day--disabled,
59
+ .w-datepicker__day--disabled:hover {
60
+ --day-color: var(--w-s-color-text-disabled);
61
+ cursor: not-allowed;
62
+ pointer-events: none;
63
+ }
64
+ `;
@@ -0,0 +1 @@
1
+ export declare const wDatepickerMonthStyles: import("lit").CSSResult;
@@ -0,0 +1,72 @@
1
+ import { css } from 'lit';
2
+ export const wDatepickerMonthStyles = css `
3
+ .w-datepicker__month {
4
+ /* Sets default used in the day fragment */
5
+ --day-width: 40px;
6
+
7
+ --_month-color: var(--month-color, var(--w-s-color-text));
8
+ --_month-font-size: var(--month-font-size, var(--w-font-size-m));
9
+ --_month-line-height: var(--month-line-height, var(--w-line-height-m));
10
+
11
+ --_month-table-min-width: var(--month-table-min-width, calc(var(--day-width) * 7));
12
+
13
+ --_weekdays-font-size: var(--weekdays-font-size, var(--w-font-size-xs));
14
+ --_weekdays-line-height: var(--weekdays-font-size, var(--w-line-height-xs));
15
+ --_weekdays-font-weight: var(--weekdays-font-weight, bold);
16
+
17
+ --_weekdays-padding: var(--weekdays-padding, 8px 0 4px 0);
18
+
19
+ text-align: center;
20
+ user-select: none;
21
+ display: inline-block;
22
+
23
+ color: var(--_month-color);
24
+ font-size: var(--_month-font-size);
25
+ line-height: var(--_month-line-height);
26
+ }
27
+
28
+ .w-datepicker__month__nav {
29
+ margin: 0 0 8px 0;
30
+ }
31
+
32
+ .w-datepicker__month__nav__header {
33
+ text-align: center;
34
+ font-weight: Bold;
35
+ }
36
+
37
+ .w-datepicker__table {
38
+ width: 100%;
39
+ border-spacing: 0;
40
+ border-collapse: collapse;
41
+ display: block;
42
+ min-width: var(--_month-table-min-width);
43
+ padding-top: 8px;
44
+ }
45
+
46
+ .w-datepicker__weekday {
47
+ text-align: center;
48
+ font-size: var(--_weekdays-font-size);
49
+ line-height: var(--_weekdays-line-height);
50
+ font-weight: var(--_weekdays-font-weight);
51
+ padding: var(--_weekdays-padding);
52
+ }
53
+
54
+ .w-datepicker__month-nav {
55
+ display: flex;
56
+ align-items: center;
57
+ justify-content: space-between;
58
+ width: 100%;
59
+ }
60
+
61
+ .w-datepicker__month__nav__button {
62
+ flex-shrink: 0;
63
+ }
64
+
65
+ .w-datepicker__month__nav__header {
66
+ flex: 1;
67
+ display: flex;
68
+ align-items: center;
69
+ justify-content: center;
70
+ text-align: center;
71
+ }
72
+ `;
@@ -0,0 +1 @@
1
+ export declare const wDatepickerStyles: import("lit").CSSResult;
@@ -0,0 +1,101 @@
1
+ import { css } from 'lit';
2
+ export const wDatepickerStyles = css `
3
+ /* CustomDatePicker.css */
4
+
5
+ /* container */
6
+ .w-datepicker-wrapper {
7
+ position: relative;
8
+ display: inline-block;
9
+ width: 100%;
10
+ font-size: var(--w-font-size-m);
11
+ line-height: var(--w-line-height-m);
12
+ }
13
+ .w-datepicker-input-wrapper {
14
+ position: relative;
15
+ }
16
+ /* hide the browser’s calendar icon, and prevent the native popup */
17
+ .w-datepicker-input {
18
+ /* remove default arrows/appearance */
19
+ -webkit-appearance: none;
20
+ -moz-appearance: textfield;
21
+ appearance: none;
22
+
23
+ /* basic styling */
24
+ display: block;
25
+ padding: 1.2rem 0.8rem;
26
+ border: 1px solid #ccc;
27
+ border-radius: 4px;
28
+ width: 100%;
29
+ height: 48px;
30
+ cursor: pointer;
31
+ font-size: var(--w-font-size-m);
32
+ line-height: var(--w-line-height-m);
33
+ background-color: var(--w-s-color-background);
34
+ }
35
+ .w-datepicker-input:hover {
36
+ border-color: var(--w-s-color-border-hover);
37
+ }
38
+ .w-datepicker-input:active {
39
+ border-color: var(--w-s-color-border-selected);
40
+ }
41
+
42
+ .w-datepicker-input:focus,
43
+ .w-datepicker-input:focus-visible {
44
+ outline: 2px solid var(--w-s-color-border-focus);
45
+ outline-offset: -2px;
46
+ }
47
+
48
+ .w-datepicker-input-label {
49
+ font-size: var(--w-font-size-s);
50
+ line-height: var(--w-line-height-s);
51
+ font-weight: 700;
52
+ cursor: pointer;
53
+ padding-bottom: 0.4rem;
54
+ color: var(--w-s-color-text);
55
+ display: block;
56
+ }
57
+
58
+ /* custom calendar button */
59
+ .w-datepicker-button {
60
+ position: absolute;
61
+ right: 2px;
62
+ top: 2px;
63
+ height: 44px;
64
+ width: 44px !important;
65
+ border-radius: 2px !important;
66
+ border: none;
67
+ cursor: pointer;
68
+ pointer-events: auto; /* override parent’s none */
69
+ }
70
+
71
+ .w-datepicker-button:not(:hover) {
72
+ background-color: var(--w-s-color-background) !important;
73
+ }
74
+
75
+ input[type='date']::-webkit-inner-spin-button,
76
+ input[type='date']::-webkit-calendar-picker-indicator {
77
+ display: none;
78
+ -webkit-appearance: none;
79
+ }
80
+ input[type='date'],
81
+ input[type='time'],
82
+ input[type='datetime-local'],
83
+ input[type='month'] {
84
+ -webkit-appearance: none;
85
+ -moz-appearance: none;
86
+ appearance: none;
87
+ }
88
+ /* Temporary dropdown, should probably use the appropriate component when it is done */
89
+ .w-dropdown__popover {
90
+ position: absolute;
91
+ width: max-content;
92
+ background-color: var(--w-s-color-background);
93
+ box-shadow: var(--w-shadow-s);
94
+ z-index: 100;
95
+ border-radius: 8px;
96
+ visibility: hidden;
97
+ }
98
+ .w-dropdown__popover--open {
99
+ visibility: visible;
100
+ }
101
+ `;
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Parses an ISO-8601 string into a JS Date.
3
+ *
4
+ * Supports:
5
+ * - YYYY-MM-DD
6
+ * - YYYY-MM-DDThh:mm:ss(.sss)?(Z|±hh:mm)?
7
+ *
8
+ * @param {string} isoString
9
+ * @returns {Date}
10
+ * @throws {TypeError} if input isn’t a string
11
+ * @throws {Error} if string is not a valid ISO-8601 date
12
+ */
13
+ export declare function fromISOToDate(isoString: string): Date | null;
@@ -0,0 +1,28 @@
1
+ const dateOnlyRe = /^\d{4}-\d{2}-\d{2}$/;
2
+ /**
3
+ * Parses an ISO-8601 string into a JS Date.
4
+ *
5
+ * Supports:
6
+ * - YYYY-MM-DD
7
+ * - YYYY-MM-DDThh:mm:ss(.sss)?(Z|±hh:mm)?
8
+ *
9
+ * @param {string} isoString
10
+ * @returns {Date}
11
+ * @throws {TypeError} if input isn’t a string
12
+ * @throws {Error} if string is not a valid ISO-8601 date
13
+ */
14
+ export function fromISOToDate(isoString) {
15
+ if (typeof isoString !== 'string') {
16
+ return null;
17
+ }
18
+ // If it's a bare date (YYYY-MM-DD), treat it as UTC midnight
19
+ let normalized = isoString;
20
+ if (dateOnlyRe.test(isoString)) {
21
+ normalized = `${isoString}T00:00:00Z`;
22
+ }
23
+ const timestamp = Date.parse(normalized);
24
+ if (Number.isNaN(timestamp)) {
25
+ return null;
26
+ }
27
+ return new Date(timestamp);
28
+ }
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import { StoryObj } from '@storybook/react';
3
+ import { DeadToggle } from './react';
4
+ declare const _default: {
5
+ title: string;
6
+ render(args: Omit<React.HTMLAttributes<import(".").WarpDeadToggle>, "render" | "renderOptions" | "connectedCallback" | "disconnectedCallback" | "renderRoot" | "isUpdatePending" | "hasUpdated" | "addController" | "removeController" | "attributeChangedCallback" | "requestUpdate" | "updateComplete" | "disabled" | "type" | "invalid" | "checked" | "indeterminate" | "indeterminateMarker"> & {} & Partial<Omit<import(".").WarpDeadToggle, keyof HTMLElement>> & React.RefAttributes<import(".").WarpDeadToggle>): React.JSX.Element;
7
+ component: import("@lit/react").ReactWebComponent<import(".").WarpDeadToggle, {}>;
8
+ };
9
+ export default _default;
10
+ export type Story = StoryObj<typeof DeadToggle>;
11
+ export declare const Radio: Story;
12
+ export declare const Checkbox: Story;
13
+ export declare const Indeterminate: Story;
14
+ export declare const Checked: Story;
15
+ export declare const Invalid: Story;
@@ -0,0 +1,34 @@
1
+ import React from 'react';
2
+ import { DeadToggle } from './react';
3
+ export default {
4
+ title: 'Forms/Dead toggle',
5
+ render(args) {
6
+ return React.createElement(DeadToggle, { ...args });
7
+ },
8
+ component: DeadToggle,
9
+ };
10
+ export const Radio = {
11
+ args: {
12
+ type: 'radio',
13
+ },
14
+ };
15
+ export const Checkbox = {
16
+ args: {
17
+ type: 'checkbox',
18
+ },
19
+ };
20
+ export const Indeterminate = {
21
+ args: {
22
+ indeterminate: true,
23
+ },
24
+ };
25
+ export const Checked = {
26
+ args: {
27
+ checked: true,
28
+ },
29
+ };
30
+ export const Invalid = {
31
+ args: {
32
+ invalid: true,
33
+ },
34
+ };
@@ -0,0 +1,14 @@
1
+ import type { Meta, StoryObj } from '@storybook/web-components-vite';
2
+ import type { WarpDeadToggle } from './index.js';
3
+ import './index.js';
4
+ declare const args: Partial<WarpDeadToggle> & {
5
+ [key: string]: any;
6
+ };
7
+ declare const meta: Meta<typeof args>;
8
+ export default meta;
9
+ type Story = StoryObj<typeof args>;
10
+ export declare const Radio: Story;
11
+ export declare const Checkbox: Story;
12
+ export declare const Indeterminate: Story;
13
+ export declare const Checked: Story;
14
+ export declare const Invalid: Story;