@stamcat/craftsman 0.0.27-alpha.19 → 0.0.27-alpha.20

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 (52) hide show
  1. package/AGENTS.md +2 -0
  2. package/Components.esm.js +48 -44
  3. package/Styles.esm.js +7 -7
  4. package/_virtual/_rolldown/runtime.esm.js +15 -6
  5. package/package.json +10 -1
  6. package/src/components/Carousel/Carousel.css +1 -1
  7. package/src/components/Carousel/Carousel.scss +1 -1
  8. package/src/components/Checkbox/Checkbox.d.ts +2 -1
  9. package/src/components/DatePicker/DatePicker.css +1 -1
  10. package/src/components/DatePicker/DatePicker.scss +1 -1
  11. package/src/components/DatePicker/ReactCalendar.css +1 -1
  12. package/src/components/DatePicker/ReactCalendar.scss +8 -29
  13. package/src/components/DatePicker/{_DateTimePicker.scss → _DatePicker.scss} +7 -1
  14. package/src/components/DateRangePicker/AGENTS.md +38 -0
  15. package/src/components/DateRangePicker/DateRangePicker.css +1 -0
  16. package/src/components/DateRangePicker/DateRangePicker.d.ts +8 -0
  17. package/src/components/DateRangePicker/DateRangePicker.scss +62 -0
  18. package/src/components/DateRangePicker/DateRangePicker2.esm.js +29 -0
  19. package/src/components/DateTimePicker/DateTimePicker.css +1 -1
  20. package/src/components/DateTimePicker/DateTimePicker.scss +2 -2
  21. package/src/components/Input/AGENTS.md +1 -0
  22. package/src/components/Input/Input.css +1 -1
  23. package/src/components/Input/Input.scss +44 -32
  24. package/src/components/Input/Input2.esm.js +27 -18
  25. package/src/components/Input/InputWrapper.d.ts +1 -0
  26. package/src/components/InputNumber/AGENTS.md +36 -0
  27. package/src/components/InputNumber/InputNumber.css +1 -0
  28. package/src/components/InputNumber/InputNumber.d.ts +9 -0
  29. package/src/components/InputNumber/InputNumber.scss +29 -0
  30. package/src/components/InputNumber/InputNumber2.esm.js +36 -0
  31. package/src/components/InputPhone/InputPhone.css +1 -1
  32. package/src/components/InputPhone/InputPhone.scss +1 -1
  33. package/src/components/Modal/Modal.css +1 -1
  34. package/src/components/Modal/Modal.scss +88 -86
  35. package/src/components/Pagination/Pagination.css +1 -1
  36. package/src/components/Pagination/Pagination.scss +1 -1
  37. package/src/components/RadioButton/RadioButton.d.ts +2 -1
  38. package/src/components/Text/Text.css +1 -1
  39. package/src/components/Text/Text.scss +1 -1
  40. package/src/components/TimePicker/AGENTS.md +1 -0
  41. package/src/components/TimePicker/TimePicker.css +1 -1
  42. package/src/components/TimePicker/TimePicker.scss +2 -2
  43. package/src/components/TimePicker/TimePicker2.esm.js +1 -0
  44. package/src/components/Tooltip/Tooltip.css +1 -1
  45. package/src/components/Tooltip/Tooltip.scss +1 -1
  46. package/src/components/index.d.ts +2 -0
  47. package/src/stories/documentation/ToDo.mdx +8 -4
  48. package/src/styles/global/components/_button.scss +9 -5
  49. package/src/styles/global/components/_input.scss +1 -1
  50. package/src/styles/global/globalStyles.scss +1 -1
  51. package/src/utilities/types.d.ts +12 -0
  52. package/src/utilities/types.esm.js +6 -6
package/AGENTS.md CHANGED
@@ -17,7 +17,9 @@ import { Button } from "@stamcat/craftsman/Button";
17
17
  import { Carousel } from "@stamcat/craftsman/Carousel";
18
18
  import { Checkbox } from "@stamcat/craftsman/Checkbox";
19
19
  import { DatePicker } from "@stamcat/craftsman/DatePicker";
20
+ import { DateRangePicker } from "@stamcat/craftsman/DateRangePicker";
20
21
  import { Input } from "@stamcat/craftsman/Input";
22
+ import { InputNumber } from "@stamcat/craftsman/InputNumber";
21
23
  import { InputPassword } from "@stamcat/craftsman/InputPassword";
22
24
  import { InputPhone } from "@stamcat/craftsman/InputPhone";
23
25
  import { Loader } from "@stamcat/craftsman/Loader";
package/Components.esm.js CHANGED
@@ -10,62 +10,66 @@ import { Text as c } from "./src/components/Text/Text2.esm.js";
10
10
  import { Modal as l } from "./src/components/Modal/Modal2.esm.js";
11
11
  import { Select as u } from "./src/components/Select/Select.esm.js";
12
12
  import { DatePicker as d } from "./src/components/DatePicker/DatePicker2.esm.js";
13
- import { InputPhone as f } from "./src/components/InputPhone/InputPhone2.esm.js";
14
- import { Pagination as p } from "./src/components/Pagination/Pagination2.esm.js";
15
- import { Carousel as m } from "./src/components/Carousel/Carousel2.esm.js";
16
- import { TimePicker as h } from "./src/components/TimePicker/TimePicker2.esm.js";
17
- import { DateTimePicker as g } from "./src/components/DateTimePicker/DateTimePicker2.esm.js";
18
- import { Tooltip as _ } from "./src/components/Tooltip/Tooltip2.esm.js";
19
- import { IconAmazonPay as v } from "./src/components/Icons/IconAmazonPay.esm.js";
20
- import { IconAmex as y } from "./src/components/Icons/IconAmex.esm.js";
21
- import { IconApplePay as b } from "./src/components/Icons/IconApplePay.esm.js";
22
- import { IconDiscover as x } from "./src/components/Icons/IconDiscover.esm.js";
23
- import { IconGooglePay as S } from "./src/components/Icons/IconGooglePay.esm.js";
24
- import { IconMaestro as C } from "./src/components/Icons/IconMaestro.esm.js";
25
- import { IconMastercard as w } from "./src/components/Icons/IconMastercard.esm.js";
26
- import { IconPayPal as T } from "./src/components/Icons/IconPayPal.esm.js";
27
- import { IconSepa as E } from "./src/components/Icons/IconSepa.esm.js";
28
- import { IconShopPay as D } from "./src/components/Icons/IconShopPay.esm.js";
29
- import { IconSquare as O } from "./src/components/Icons/IconSquare.esm.js";
30
- import { IconStripe as k } from "./src/components/Icons/IconStripe.esm.js";
31
- import { IconUnionPay as A } from "./src/components/Icons/IconUnionPay.esm.js";
32
- import { IconVenmo as j } from "./src/components/Icons/IconVenmo.esm.js";
33
- import { IconVisa as M } from "./src/components/Icons/IconVisa.esm.js";
13
+ import { DateRangePicker as f } from "./src/components/DateRangePicker/DateRangePicker2.esm.js";
14
+ import { InputPhone as p } from "./src/components/InputPhone/InputPhone2.esm.js";
15
+ import { InputNumber as m } from "./src/components/InputNumber/InputNumber2.esm.js";
16
+ import { Pagination as h } from "./src/components/Pagination/Pagination2.esm.js";
17
+ import { Carousel as g } from "./src/components/Carousel/Carousel2.esm.js";
18
+ import { TimePicker as _ } from "./src/components/TimePicker/TimePicker2.esm.js";
19
+ import { DateTimePicker as v } from "./src/components/DateTimePicker/DateTimePicker2.esm.js";
20
+ import { Tooltip as y } from "./src/components/Tooltip/Tooltip2.esm.js";
21
+ import { IconAmazonPay as b } from "./src/components/Icons/IconAmazonPay.esm.js";
22
+ import { IconAmex as x } from "./src/components/Icons/IconAmex.esm.js";
23
+ import { IconApplePay as S } from "./src/components/Icons/IconApplePay.esm.js";
24
+ import { IconDiscover as C } from "./src/components/Icons/IconDiscover.esm.js";
25
+ import { IconGooglePay as w } from "./src/components/Icons/IconGooglePay.esm.js";
26
+ import { IconMaestro as T } from "./src/components/Icons/IconMaestro.esm.js";
27
+ import { IconMastercard as E } from "./src/components/Icons/IconMastercard.esm.js";
28
+ import { IconPayPal as D } from "./src/components/Icons/IconPayPal.esm.js";
29
+ import { IconSepa as O } from "./src/components/Icons/IconSepa.esm.js";
30
+ import { IconShopPay as k } from "./src/components/Icons/IconShopPay.esm.js";
31
+ import { IconSquare as A } from "./src/components/Icons/IconSquare.esm.js";
32
+ import { IconStripe as j } from "./src/components/Icons/IconStripe.esm.js";
33
+ import { IconUnionPay as M } from "./src/components/Icons/IconUnionPay.esm.js";
34
+ import { IconVenmo as N } from "./src/components/Icons/IconVenmo.esm.js";
35
+ import { IconVisa as P } from "./src/components/Icons/IconVisa.esm.js";
34
36
  import "./src/components/Icons/index.esm.js";
35
37
  //#region src/components/index.ts
36
- var N = /* @__PURE__ */ e({
38
+ var F = /* @__PURE__ */ e({
37
39
  Button: () => t,
38
- Carousel: () => m,
40
+ Carousel: () => g,
39
41
  Checkbox: () => o,
40
42
  DatePicker: () => d,
41
- DateTimePicker: () => g,
42
- IconAmazonPay: () => v,
43
- IconAmex: () => y,
44
- IconApplePay: () => b,
45
- IconDiscover: () => x,
46
- IconGooglePay: () => S,
47
- IconMaestro: () => C,
48
- IconMastercard: () => w,
49
- IconPayPal: () => T,
50
- IconSepa: () => E,
51
- IconShopPay: () => D,
52
- IconSquare: () => O,
53
- IconStripe: () => k,
54
- IconUnionPay: () => A,
55
- IconVenmo: () => j,
56
- IconVisa: () => M,
43
+ DateRangePicker: () => f,
44
+ DateTimePicker: () => v,
45
+ IconAmazonPay: () => b,
46
+ IconAmex: () => x,
47
+ IconApplePay: () => S,
48
+ IconDiscover: () => C,
49
+ IconGooglePay: () => w,
50
+ IconMaestro: () => T,
51
+ IconMastercard: () => E,
52
+ IconPayPal: () => D,
53
+ IconSepa: () => O,
54
+ IconShopPay: () => k,
55
+ IconSquare: () => A,
56
+ IconStripe: () => j,
57
+ IconUnionPay: () => M,
58
+ IconVenmo: () => N,
59
+ IconVisa: () => P,
57
60
  Input: () => n,
61
+ InputNumber: () => m,
58
62
  InputPassword: () => r,
59
- InputPhone: () => f,
63
+ InputPhone: () => p,
60
64
  Loader: () => i,
61
65
  Modal: () => l,
62
- Pagination: () => p,
66
+ Pagination: () => h,
63
67
  RadioButton: () => a,
64
68
  Select: () => u,
65
69
  Text: () => c,
66
70
  Textarea: () => s,
67
- TimePicker: () => h,
68
- Tooltip: () => _
71
+ TimePicker: () => _,
72
+ Tooltip: () => y
69
73
  });
70
74
  //#endregion
71
- export { t as Button, m as Carousel, o as Checkbox, d as DatePicker, g as DateTimePicker, v as IconAmazonPay, y as IconAmex, b as IconApplePay, x as IconDiscover, S as IconGooglePay, C as IconMaestro, w as IconMastercard, T as IconPayPal, E as IconSepa, D as IconShopPay, O as IconSquare, k as IconStripe, A as IconUnionPay, j as IconVenmo, M as IconVisa, n as Input, r as InputPassword, f as InputPhone, i as Loader, l as Modal, p as Pagination, a as RadioButton, u as Select, c as Text, s as Textarea, h as TimePicker, _ as Tooltip, N as components_exports };
75
+ export { t as Button, g as Carousel, o as Checkbox, d as DatePicker, f as DateRangePicker, v as DateTimePicker, b as IconAmazonPay, x as IconAmex, S as IconApplePay, C as IconDiscover, w as IconGooglePay, T as IconMaestro, E as IconMastercard, D as IconPayPal, O as IconSepa, k as IconShopPay, A as IconSquare, j as IconStripe, M as IconUnionPay, N as IconVenmo, P as IconVisa, n as Input, m as InputNumber, r as InputPassword, p as InputPhone, i as Loader, l as Modal, h as Pagination, a as RadioButton, u as Select, c as Text, s as Textarea, _ as TimePicker, y as Tooltip, F as components_exports };
package/Styles.esm.js CHANGED
@@ -1,7 +1,7 @@
1
- import { BaseWidthSchema as e, BreakpointSchema as t, ButtonType as n, CarouselPageType as r, LayoutWidthsSchema as i, MaxScreenWidthSchema as a, ScreenWidthSchema as o, TextSize as s, TextTags as c, TextType as l, zLabelPosition as u, zTextInputExclusions as d, zTextInputType as f, zTextInputTypes as p } from "./src/utilities/types.esm.js";
2
- import { defaultColors as m, defaultWidths as h } from "./src/styles/utilities/constants.esm.js";
3
- import { breakpoint as g, media as _, width as v, widths as y } from "./src/styles/utilities/layout.esm.js";
4
- import { color as b, colors as x, hexToRgba as S } from "./src/styles/utilities/color.esm.js";
5
- import { themeBuilder as C } from "./src/styles/theme/theme.esm.js";
6
- import { ThemeProvider as w } from "./src/styles/components/ThemeProvider.esm.js";
7
- export { e as BaseWidthSchema, t as BreakpointSchema, n as ButtonType, r as CarouselPageType, i as LayoutWidthsSchema, a as MaxScreenWidthSchema, o as ScreenWidthSchema, s as TextSize, c as TextTags, l as TextType, w as ThemeProvider, g as breakpoint, b as color, x as colors, m as defaultColors, h as defaultWidths, S as hexToRgba, _ as media, C as themeBuilder, v as width, y as widths, u as zLabelPosition, d as zTextInputExclusions, f as zTextInputType, p as zTextInputTypes };
1
+ import { BaseWidthSchema as e, BreakpointSchema as t, ButtonType as n, CarouselPageType as r, LayoutWidthsSchema as i, MaxScreenWidthSchema as a, ScreenWidthSchema as o, TextSize as s, TextTags as c, TextType as l, zCheckboxLabelPosition as u, zLabelPosition as d, zRadioLabelPosition as f, zTextInputExclusions as p, zTextInputType as m, zTextInputTypes as h } from "./src/utilities/types.esm.js";
2
+ import { defaultColors as g, defaultWidths as _ } from "./src/styles/utilities/constants.esm.js";
3
+ import { breakpoint as v, media as y, width as b, widths as x } from "./src/styles/utilities/layout.esm.js";
4
+ import { color as S, colors as C, hexToRgba as w } from "./src/styles/utilities/color.esm.js";
5
+ import { themeBuilder as T } from "./src/styles/theme/theme.esm.js";
6
+ import { ThemeProvider as E } from "./src/styles/components/ThemeProvider.esm.js";
7
+ export { e as BaseWidthSchema, t as BreakpointSchema, n as ButtonType, r as CarouselPageType, i as LayoutWidthsSchema, a as MaxScreenWidthSchema, o as ScreenWidthSchema, s as TextSize, c as TextTags, l as TextType, E as ThemeProvider, v as breakpoint, S as color, C as colors, g as defaultColors, _ as defaultWidths, w as hexToRgba, y as media, T as themeBuilder, b as width, x as widths, u as zCheckboxLabelPosition, d as zLabelPosition, f as zRadioLabelPosition, p as zTextInputExclusions, m as zTextInputType, h as zTextInputTypes };
@@ -1,14 +1,23 @@
1
1
  //#region \0rolldown/runtime.js
2
- var e = Object.defineProperty, t = (e, t) => () => (t || (e((t = { exports: {} }).exports, t), e = null), t.exports), n = (t, n) => {
2
+ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescriptor, r = Object.getOwnPropertyNames, i = Object.getPrototypeOf, a = Object.prototype.hasOwnProperty, o = (e, t) => () => (t || (e((t = { exports: {} }).exports, t), e = null), t.exports), s = (e, n) => {
3
3
  let r = {};
4
- for (var i in t) e(r, i, {
5
- get: t[i],
4
+ for (var i in e) t(r, i, {
5
+ get: e[i],
6
6
  enumerable: !0
7
7
  });
8
- return n || e(r, Symbol.toStringTag, { value: "Module" }), r;
9
- }, r = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy < "u" ? new Proxy(e, { get: (e, t) => (typeof require < "u" ? require : e)[t] }) : e)(function(e) {
8
+ return n || t(r, Symbol.toStringTag, { value: "Module" }), r;
9
+ }, c = (e, i, o, s) => {
10
+ if (i && typeof i == "object" || typeof i == "function") for (var c = r(i), l = 0, u = c.length, d; l < u; l++) d = c[l], !a.call(e, d) && d !== o && t(e, d, {
11
+ get: ((e) => i[e]).bind(null, d),
12
+ enumerable: !(s = n(i, d)) || s.enumerable
13
+ });
14
+ return e;
15
+ }, l = (n, r, a) => (a = n == null ? {} : e(i(n)), c(r || !n || !n.__esModule ? t(a, "default", {
16
+ value: n,
17
+ enumerable: !0
18
+ }) : a, n)), u = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy < "u" ? new Proxy(e, { get: (e, t) => (typeof require < "u" ? require : e)[t] }) : e)(function(e) {
10
19
  if (typeof require < "u") return require.apply(this, arguments);
11
20
  throw Error("Calling `require` for \"" + e + "\" in an environment that doesn't expose the `require` function. See https://rolldown.rs/in-depth/bundling-cjs#require-external-modules for more details.");
12
21
  });
13
22
  //#endregion
14
- export { t as __commonJSMin, n as __exportAll, r as __require };
23
+ export { o as __commonJSMin, s as __exportAll, u as __require, l as __toESM };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stamcat/craftsman",
3
- "version": "0.0.27-alpha.19",
3
+ "version": "0.0.27-alpha.20",
4
4
  "type": "module",
5
5
  "description": "A powerful, lightweight framework for design systems",
6
6
  "repository": {
@@ -24,6 +24,7 @@
24
24
  },
25
25
  "dependencies": {
26
26
  "@floating-ui/react-dom": "2.1.9",
27
+ "@wojtekmaj/react-daterange-picker": "7.1.0",
27
28
  "clsx": "2.1.1",
28
29
  "country-flag-icons": "1.6.20",
29
30
  "dompurify": "3.4.13",
@@ -111,10 +112,18 @@
111
112
  "types": "./src/components/DatePicker.d.ts",
112
113
  "default": "./src/components/DatePicker.esm.js"
113
114
  },
115
+ "./DateRangePicker": {
116
+ "types": "./src/components/DateRangePicker.d.ts",
117
+ "default": "./src/components/DateRangePicker.esm.js"
118
+ },
114
119
  "./InputPhone": {
115
120
  "types": "./src/components/InputPhone.d.ts",
116
121
  "default": "./src/components/InputPhone.esm.js"
117
122
  },
123
+ "./InputNumber": {
124
+ "types": "./src/components/InputNumber.d.ts",
125
+ "default": "./src/components/InputNumber.esm.js"
126
+ },
118
127
  "./Pagination": {
119
128
  "types": "./src/components/Pagination.d.ts",
120
129
  "default": "./src/components/Pagination.esm.js"
@@ -1 +1 @@
1
- @layer craftsman-base{.carousel{position:relative}.carousel__viewport{overflow:hidden}.carousel__container{touch-action:pan-y pinch-zoom;display:flex}.carousel__slide{flex:0 0 100%;min-width:0}.carousel__controls{justify-content:space-between;gap:calc(var(--w-gutter) * .5);margin-top:calc(var(--w-gutter) * .75);flex-flow:row;width:100%;display:inline-flex}.carousel__dots button{margin:0 calc(var(--w-gutter) * .125)}}
1
+ @layer craftsman-component{.carousel{position:relative}.carousel__viewport{overflow:hidden}.carousel__container{touch-action:pan-y pinch-zoom;display:flex}.carousel__slide{flex:0 0 100%;min-width:0}.carousel__controls{justify-content:space-between;gap:calc(var(--w-gutter) * .5);margin-top:calc(var(--w-gutter) * .75);flex-flow:row;width:100%;display:inline-flex}.carousel__dots button{margin:0 calc(var(--w-gutter) * .125)}}
@@ -1,6 +1,6 @@
1
1
  @use "../../styles/utilities/_functions" as u;
2
2
 
3
- @layer craftsman-base {
3
+ @layer craftsman-component {
4
4
  .carousel {
5
5
  position: relative;
6
6
 
@@ -1,6 +1,7 @@
1
1
  import { InputProps } from '../Input/Input';
2
+ import { CheckboxLabelPosition } from '../../utilities/types';
2
3
  export type CheckboxProps = InputProps & {
3
4
  type?: "checkbox";
4
- labelPosition?: "left" | "right" | "top" | "bottom";
5
+ labelPosition?: CheckboxLabelPosition;
5
6
  };
6
7
  export declare const Checkbox: React.FC<CheckboxProps>;
@@ -1 +1 @@
1
- @layer craftsman-base{.react-date-picker__wrapper:focus{box-shadow:none;outline:0}.react-date-picker__wrapper{color:var(--text);border:1px solid var(--gray400);padding:calc(var(--w-gutter) * .5);background-color:var(--white);border-radius:3px}[type=number].react-date-picker__wrapper::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}[type=number].react-date-picker__wrapper::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}[type=number].react-date-picker__wrapper{appearance:textfield}.react-date-picker__wrapper:disabled,.disabled.react-date-picker__wrapper{border-color:var(--gray200);background-color:var(--gray100)}.react-date-picker{display:inline-flex;position:relative}.react-date-picker--disabled{color:#6d6d6d;background-color:#f0f0f0}.react-date-picker__wrapper{flex-grow:1;flex-shrink:0;padding:6px 8px;display:flex}.react-date-picker__inputGroup{box-sizing:content-box;flex-grow:1;padding:0 2px}.react-date-picker__inputGroup__divider{white-space:pre;padding:1px 0}.react-date-picker__inputGroup__divider,.react-date-picker__inputGroup__leadingZero{font:inherit;display:inline-block}.react-date-picker__inputGroup__input{text-align:center;color:currentColor;min-width:calc(2ch + 1px);height:calc(100% - 2px);font:inherit;box-sizing:content-box;appearance:textfield;background:0 0;border:0;padding:1px;position:relative}.react-date-picker__inputGroup__input::-webkit-outer-spin-button{appearance:none;margin:0}.react-date-picker__inputGroup__input::-webkit-inner-spin-button{appearance:none;margin:0}.react-date-picker__inputGroup__input--hasLeadingZero{margin-left:-.54em;padding-left:calc(1px + .54em)}.react-date-picker__button{border:0;padding:4px 4px 4px 7px}.react-date-picker__button:hover{background:0 0}.react-date-picker__calendar{z-index:1;width:350px;max-width:100vw}.react-date-picker__calendar .react-calendar{border-width:thin}.react-date-picker__calendar--closed,.react-date-picker__clock--closed{display:none}.react-date-picker__calendar .react-date-picker__inputGroup__input:invalid{background:unset}}.react-date-picker,.react-date-picker *,.react-date-picker :before,.react-date-picker :after{box-sizing:border-box}
1
+ @layer craftsman-base{.react-date-picker__wrapper:focus{box-shadow:none;outline:0}.react-date-picker__wrapper{color:var(--text);border:1px solid var(--gray400);padding:calc(var(--w-gutter) * .5);background-color:var(--white);border-radius:6px}[type=number].react-date-picker__wrapper::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}[type=number].react-date-picker__wrapper::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}[type=number].react-date-picker__wrapper{appearance:textfield}.react-date-picker__wrapper:disabled,.disabled.react-date-picker__wrapper{border-color:var(--gray200);background-color:var(--gray100)}.react-date-picker__calendar{z-index:1;width:350px;max-width:100vw}.react-date-picker__calendar .react-calendar{border-width:thin}.react-date-picker__calendar--closed,.react-date-picker__clock--closed{display:none}.react-date-picker__calendar .react-date-picker__inputGroup__input:invalid{background:unset}}.react-date-picker,.react-date-picker *,.react-date-picker :before,.react-date-picker :after{box-sizing:border-box}@layer craftsman-component{.react-date-picker{display:inline-flex;position:relative}.react-date-picker--disabled{color:#6d6d6d;background-color:#f0f0f0}.react-date-picker__wrapper{flex-grow:1;flex-shrink:0;padding:6px 8px;display:flex}.react-date-picker__inputGroup{box-sizing:content-box;flex-grow:1;padding:0 2px}.react-date-picker__inputGroup__divider{white-space:pre;padding:1px 0}.react-date-picker__inputGroup__divider,.react-date-picker__inputGroup__leadingZero{font:inherit;display:inline-block}.react-date-picker__inputGroup__input{text-align:center;color:currentColor;min-width:calc(2ch + 1px);height:calc(100% - 2px);font:inherit;box-sizing:content-box;appearance:textfield;background:0 0;border:0;padding:1px;position:relative}[name=year].react-date-picker__inputGroup__input{min-width:calc(4ch + 2px)}.react-date-picker__inputGroup__input:disabled{background-color:unset}.react-date-picker__inputGroup__input::-webkit-outer-spin-button{appearance:none;margin:0}.react-date-picker__inputGroup__input::-webkit-inner-spin-button{appearance:none;margin:0}.react-date-picker__inputGroup__input--hasLeadingZero{margin-left:-.54em;padding-left:calc(1px + .54em)}.react-date-picker__button{border:0;padding:4px 4px 4px 7px}.react-date-picker__button:hover{background:0 0}}
@@ -1,7 +1,7 @@
1
1
  @use "../../styles/global/components/input";
2
2
  @use "../../styles/utilities/_functions" as u;
3
3
  @use "../../styles/utilities/_placeholders";
4
- @use "./_DateTimePicker";
4
+ @use "./_DatePicker";
5
5
  @layer craftsman-base {
6
6
  .react-date-picker,
7
7
  .react-date-picker *,
@@ -1 +1 @@
1
- .react-calendar,.react-calendar *,.react-calendar :before,.react-calendar :after{box-sizing:border-box}@layer craftsman-base{.react-calendar{background:#fff;border:1px solid #a0a096;width:350px;max-width:100%;line-height:1.125em}.react-calendar--doubleView{width:700px}.react-calendar--doubleView .react-calendar__viewContainer{margin:-.5em;display:flex}.react-calendar--doubleView .react-calendar__viewContainer>*{width:50%;margin:.5em}.react-calendar button{border:0;outline:none;margin:0}.react-calendar button:enabled:hover{cursor:pointer}.react-calendar__navigation{height:44px;margin-bottom:1em;display:flex}.react-calendar__navigation button{background:0 0;min-width:44px}.react-calendar__navigation button:disabled{background-color:#f0f0f0}.react-calendar__navigation button:enabled:hover,.react-calendar__navigation button:enabled:focus{background-color:#e6e6e6}.react-calendar__month-view__weekdays{text-align:center;text-transform:uppercase;font:inherit;font-size:.75em;font-weight:700}.react-calendar__month-view__weekdays__weekday{padding:.5em}.react-calendar__month-view__weekNumbers .react-calendar__tile{font:inherit;justify-content:center;align-items:center;font-size:.75em;font-weight:700;display:flex}.react-calendar__month-view__days__day--weekend{color:#d10000}.react-calendar__month-view__days__day--neighboringMonth,.react-calendar__decade-view__years__year--neighboringDecade,.react-calendar__century-view__decades__decade--neighboringCentury{color:#757575}.react-calendar__year-view .react-calendar__tile,.react-calendar__decade-view .react-calendar__tile,.react-calendar__century-view .react-calendar__tile{padding:2em .5em}.react-calendar__tile{text-align:center;max-width:100%;font:inherit;background:0 0;padding:10px 6.6667px;font-size:.833em}.react-calendar__tile:disabled{color:#ababab;background-color:#f0f0f0}.react-calendar__month-view__days__day--neighboringMonth:disabled,.react-calendar__decade-view__years__year--neighboringDecade:disabled,.react-calendar__century-view__decades__decade--neighboringCentury:disabled{color:#cdcdcd}.react-calendar__tile:enabled:hover,.react-calendar__tile:enabled:focus{background-color:#e6e6e6}.react-calendar__tile--now{background:#ffff76}.react-calendar__tile--now:enabled:hover,.react-calendar__tile--now:enabled:focus{background:#ffffa9}.react-calendar__tile--hasActive{background:#76baff}.react-calendar__tile--hasActive:enabled:hover,.react-calendar__tile--hasActive:enabled:focus{background:#a9d4ff}.react-calendar__tile--active{color:#fff;background:#006edc}.react-calendar__tile--active:enabled:hover,.react-calendar__tile--active:enabled:focus{background:#1087ff}.react-calendar--selectRange .react-calendar__tile--hover{background-color:#e6e6e6}.react-calendar{border-color:var(--gray400)}.react-calendar button{justify-content:center}.react-calendar__month-view__days button.react-calendar__tile{height:50px}.react-calendar__month-view__days button.react-calendar__tile:hover,.react-calendar__month-view__days button.react-calendar__tile--active,.react-calendar__month-view__days button.react-calendar__tile--now{border-radius:50%}}
1
+ .react-calendar,.react-calendar *,.react-calendar :before,.react-calendar :after{box-sizing:border-box}@layer craftsman-base{.react-calendar{background:#fff;border:1px solid #a0a096;width:350px;max-width:100%;line-height:1.125em}.react-calendar--doubleView{width:700px}.react-calendar--doubleView .react-calendar__viewContainer{margin:-.5em;display:flex}.react-calendar--doubleView .react-calendar__viewContainer>*{width:50%;margin:.5em}.react-calendar button{border:0;outline:none;margin:0}.react-calendar button:enabled:hover{cursor:pointer}.react-calendar__navigation{height:44px;margin-bottom:1em;display:flex}.react-calendar__navigation button{background:0 0;min-width:44px}.react-calendar__navigation button:disabled{background-color:#f0f0f0}.react-calendar__navigation button:enabled:hover,.react-calendar__navigation button:enabled:focus{background-color:#e6e6e6}.react-calendar__month-view__weekdays{text-align:center;text-transform:uppercase;font:inherit;font-size:.75em;font-weight:700}.react-calendar__month-view__weekdays__weekday{padding:.5em}.react-calendar__month-view__weekNumbers .react-calendar__tile{font:inherit;justify-content:center;align-items:center;font-size:.75em;font-weight:700;display:flex}.react-calendar__month-view__days__day--weekend{color:#d10000}.react-calendar__month-view__days__day--neighboringMonth,.react-calendar__decade-view__years__year--neighboringDecade,.react-calendar__century-view__decades__decade--neighboringCentury{color:#757575}.react-calendar__tile:disabled{color:#ababab;background-color:#f0f0f0}.react-calendar__month-view__days__day--neighboringMonth:disabled,.react-calendar__decade-view__years__year--neighboringDecade:disabled,.react-calendar__century-view__decades__decade--neighboringCentury:disabled{color:#cdcdcd}.react-calendar__tile:enabled:hover,.react-calendar__tile:enabled:focus{background-color:#e6e6e6}.react-calendar__tile--now{background:#ffff76}.react-calendar__tile--now:enabled:hover,.react-calendar__tile--now:enabled:focus{background:#ffffa9}.react-calendar__tile--hasActive{background:#76baff}.react-calendar__tile--hasActive:enabled:hover,.react-calendar__tile--hasActive:enabled:focus{background:#a9d4ff}.react-calendar__tile--active{color:#fff;background:#006edc}.react-calendar__tile--active:enabled:hover,.react-calendar__tile--active:enabled:focus{background:#1087ff}.react-calendar--selectRange .react-calendar__tile--hover{background-color:#e6e6e6}.react-calendar{border-color:var(--gray400)}.react-calendar button{border-radius:unset;justify-content:center;padding:12px 0}.react-calendar__year-view button,.react-calendar__decade-view button,.react-calendar__century-view button{padding:18px 0}}
@@ -90,22 +90,6 @@
90
90
  .react-calendar__century-view__decades__decade--neighboringCentury {
91
91
  color: #757575;
92
92
  }
93
-
94
- .react-calendar__year-view .react-calendar__tile,
95
- .react-calendar__decade-view .react-calendar__tile,
96
- .react-calendar__century-view .react-calendar__tile {
97
- padding: 2em 0.5em;
98
- }
99
-
100
- .react-calendar__tile {
101
- max-width: 100%;
102
- padding: 10px 6.6667px;
103
- background: none;
104
- text-align: center;
105
- font: inherit;
106
- font-size: 0.833em;
107
- }
108
-
109
93
  .react-calendar__tile:disabled {
110
94
  background-color: #f0f0f0;
111
95
  color: #ababab;
@@ -159,20 +143,15 @@
159
143
  .react-calendar button {
160
144
  justify-content: center;
161
145
  }
162
- .react-calendar__month-view__days {
146
+ .react-calendar {
147
+ button {
148
+ border-radius: unset;
149
+ padding: 12px 0px;
150
+ }
151
+ }
152
+ .react-calendar__year-view, .react-calendar__decade-view, .react-calendar__century-view {
163
153
  button {
164
- &.react-calendar__tile {
165
- height: 50px;
166
- &:hover {
167
- border-radius: 50%;
168
- }
169
- &--active {
170
- border-radius: 50%;
171
- }
172
- &--now {
173
- border-radius: 50%;
174
- }
175
- }
154
+ padding: 18px 0px;
176
155
  }
177
156
  }
178
157
 
@@ -2,7 +2,7 @@
2
2
  @use "../../styles/utilities/_functions" as u;
3
3
  @use "../../styles/utilities/_placeholders";
4
4
 
5
- @layer craftsman-base {
5
+ @layer craftsman-component {
6
6
  %date-picker-styles {
7
7
  display: inline-flex;
8
8
  position: relative;
@@ -46,6 +46,12 @@
46
46
  -webkit-appearance: textfield;
47
47
  -moz-appearance: textfield;
48
48
  appearance: textfield;
49
+ &[name="year"] {
50
+ min-width: calc(4ch + 2px);
51
+ }
52
+ &:disabled {
53
+ background-color: unset;
54
+ }
49
55
  }
50
56
  %date-picker-input-spinner {
51
57
  -webkit-appearance: none;
@@ -0,0 +1,38 @@
1
+ # DateRangePicker — Agent Usage Notes
2
+
3
+ Import:
4
+
5
+ ```tsx
6
+ import { DateRangePicker } from "@stamcat/craftsman/DateRangePicker";
7
+ ```
8
+
9
+ Props:
10
+
11
+ - Extends `DateRangePickerProps` from `@wojtekmaj/react-daterange-picker`.
12
+ - `label?: string | ReactNode`
13
+ - `labelPosition?: "top" | "left" | "bottom" | "right" | "inside" | "hidden"` (default: `"top"`)
14
+ - `error?: string | boolean | ReactNode`
15
+ - `required?: boolean`
16
+ - `id?: string`
17
+ - `style?: React.CSSProperties`
18
+ - `value?` / `onChange?` — from the underlying library; `value` is typically a `[Date, Date] | null` tuple.
19
+
20
+ Behavior notes:
21
+
22
+ - This component directly wraps `react-daterange-picker`; consult that library's docs for range-selection edge cases.
23
+ - `calendarIcon` and `clearIcon` default to `FaRegCalendar` / `FaX` but can be overridden since consumer props are spread after the defaults.
24
+ - Controlled component — parent owns `value` and `onChange`.
25
+ - Calendar flyout renders below the input; ensure the container has enough vertical space.
26
+
27
+ Example:
28
+
29
+ ```tsx
30
+ const [range, setRange] = useState<[Date, Date] | null>(null);
31
+
32
+ <DateRangePicker
33
+ label="Stay Dates"
34
+ value={range}
35
+ onChange={setRange}
36
+ required
37
+ />
38
+ ```
@@ -0,0 +1 @@
1
+ @layer craftsman-base{.react-daterange-picker__wrapper:focus{box-shadow:none;outline:0}.react-daterange-picker__wrapper{color:var(--text);border:1px solid var(--gray400);padding:calc(var(--w-gutter) * .5);background-color:var(--white);border-radius:6px}[type=number].react-daterange-picker__wrapper::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}[type=number].react-daterange-picker__wrapper::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}[type=number].react-daterange-picker__wrapper{appearance:textfield}.react-daterange-picker__wrapper:disabled,.disabled.react-daterange-picker__wrapper{border-color:var(--gray200);background-color:var(--gray100)}}.react-daterange-picker,.react-daterange-picker *,.react-daterange-picker :before,.react-daterange-picker :after{box-sizing:border-box}@layer craftsman-component{.react-daterange-picker{display:inline-flex;position:relative}.react-daterange-picker--disabled{color:#6d6d6d;background-color:#f0f0f0}.react-daterange-picker__wrapper{flex-grow:1;flex-shrink:0;padding:6px 8px;display:flex}.react-daterange-picker__inputGroup{box-sizing:content-box;flex-grow:1;padding:0 2px}.react-daterange-picker__inputGroup__divider{white-space:pre;padding:1px 0}.react-daterange-picker__inputGroup__divider,.react-daterange-picker__inputGroup__leadingZero{font:inherit;display:inline-block}.react-daterange-picker__inputGroup__input{text-align:center;color:currentColor;min-width:calc(2ch + 1px);height:calc(100% - 2px);font:inherit;box-sizing:content-box;appearance:textfield;background:0 0;border:0;padding:1px;position:relative}[name=year].react-daterange-picker__inputGroup__input{min-width:calc(4ch + 2px)}.react-daterange-picker__inputGroup__input:disabled{background-color:unset}.react-daterange-picker__inputGroup__input::-webkit-outer-spin-button{appearance:none;margin:0}.react-daterange-picker__inputGroup__input::-webkit-inner-spin-button{appearance:none;margin:0}.react-daterange-picker__inputGroup__input--hasLeadingZero{margin-left:-.54em;padding-left:calc(1px + .54em)}.react-daterange-picker__button{border:0;padding:4px 4px 4px 7px}.react-daterange-picker__button:hover{background:0 0}.react-daterange-picker__calendar{z-index:1;width:350px;max-width:100vw}.react-daterange-picker__calendar .react-calendar{border-width:thin}.react-daterange-picker__calendar--closed,.react-daterange-picker__clock--closed{display:none}.react-daterange-picker__calendar .react-daterange-picker__inputGroup__input:invalid{background:unset}}
@@ -0,0 +1,8 @@
1
+ import { default as React } from 'react';
2
+ import { LabeledInput } from '../Input/InputWrapper';
3
+ import { DateRangePickerProps as ReactDateRangePickerProps } from '@wojtekmaj/react-daterange-picker';
4
+ export type DateRangePickerProps = ReactDateRangePickerProps & LabeledInput & {
5
+ id?: string;
6
+ style?: React.CSSProperties;
7
+ };
8
+ export declare const DateRangePicker: React.FC<DateRangePickerProps>;
@@ -0,0 +1,62 @@
1
+ @use "../../styles/global/components/input";
2
+ @use "../../styles/utilities/_functions" as u;
3
+ @use "../../styles/utilities/_placeholders";
4
+ @use "../DatePicker/_DatePicker";
5
+ @layer craftsman-component {
6
+ .react-daterange-picker,
7
+ .react-daterange-picker *,
8
+ .react-daterange-picker *:before,
9
+ .react-daterange-picker *:after {
10
+ @extend %border-box;
11
+ }
12
+
13
+ .react-daterange-picker {
14
+ @extend %date-picker-styles;
15
+ &--disabled {
16
+ @extend %date-picker-disabled;
17
+ }
18
+ &__wrapper {
19
+ @extend %date-picker-wrapper;
20
+ }
21
+ &__inputGroup {
22
+ @extend %date-picker-input-group;
23
+ }
24
+ &__inputGroup__divider {
25
+ @extend %date-picker-divider;
26
+ }
27
+ &__inputGroup__divider,
28
+ &__inputGroup__leadingZero {
29
+ @extend %date-picker-leading-zero-divider;
30
+ }
31
+ &__inputGroup__input {
32
+ @extend %date-picker-group-input;
33
+ }
34
+ &__inputGroup__input::-webkit-outer-spin-button,
35
+ &__inputGroup__input::-webkit-inner-spin-button {
36
+ @extend %date-picker-input-spinner;
37
+ }
38
+ &__inputGroup__input--hasLeadingZero {
39
+ @extend %date-picker-input-leading-zero;
40
+ }
41
+ &__button {
42
+ @extend %date-picker-button;
43
+ }
44
+ &__calendar {
45
+ width: 350px;
46
+ max-width: 100vw;
47
+ z-index: 1;
48
+ .react-calendar {
49
+ border-width: thin;
50
+ }
51
+ }
52
+ &__calendar--closed, &__clock--closed {
53
+ display: none;
54
+ }
55
+
56
+ }
57
+ .react-daterange-picker__calendar
58
+ .react-daterange-picker__inputGroup__input:invalid {
59
+ background: unset;
60
+ }
61
+
62
+ }
@@ -0,0 +1,29 @@
1
+ "use client";
2
+ import { InputWrapper as e } from "../Input/InputWrapper.esm.js";
3
+ import './DateRangePicker.css';import '../DatePicker/ReactCalendar.css';/* empty css */
4
+ /* empty css */
5
+ import t from "../../../node_modules/@wojtekmaj/react-daterange-picker/dist/DateRangePicker.esm.js";
6
+ import n from "clsx";
7
+ import { jsx as r } from "react/jsx-runtime";
8
+ import { useId as i } from "react";
9
+ import { FaRegCalendar as a, FaX as o } from "react-icons/fa6";
10
+ //#region src/components/DateRangePicker/DateRangePicker.tsx
11
+ var s = ({ label: s, id: c, labelPosition: l = "top", required: u = !1, error: d, style: f, className: p, ...m }) => {
12
+ let h = i();
13
+ return /* @__PURE__ */ r(e, {
14
+ id: c || h,
15
+ className: n("dateRangePicker", p),
16
+ label: s,
17
+ labelPosition: l,
18
+ error: d,
19
+ required: u,
20
+ style: f,
21
+ children: /* @__PURE__ */ r(t, {
22
+ calendarIcon: /* @__PURE__ */ r(a, { size: 16 }),
23
+ clearIcon: /* @__PURE__ */ r(o, { size: 14 }),
24
+ ...m
25
+ })
26
+ });
27
+ };
28
+ //#endregion
29
+ export { s as DateRangePicker };
@@ -1 +1 @@
1
- @layer craftsman-base{.react-datetime-picker__wrapper:focus{box-shadow:none;outline:0}.react-datetime-picker__wrapper{color:var(--text);border:1px solid var(--gray400);padding:calc(var(--w-gutter) * .5);background-color:var(--white);border-radius:3px}[type=number].react-datetime-picker__wrapper::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}[type=number].react-datetime-picker__wrapper::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}[type=number].react-datetime-picker__wrapper{appearance:textfield}.react-datetime-picker__wrapper:disabled,.disabled.react-datetime-picker__wrapper{border-color:var(--gray200);background-color:var(--gray100)}.react-datetime-picker{display:inline-flex;position:relative}.react-datetime-picker--disabled{color:#6d6d6d;background-color:#f0f0f0}.react-datetime-picker__wrapper{flex-grow:1;flex-shrink:0;padding:6px 8px;display:flex}.react-datetime-picker__inputGroup{box-sizing:content-box;flex-grow:1;padding:0 2px}.react-datetime-picker__inputGroup__divider{white-space:pre;padding:1px 0}.react-datetime-picker__inputGroup__divider,.react-datetime-picker__inputGroup__leadingZero{font:inherit;display:inline-block}.react-datetime-picker__inputGroup__input{text-align:center;color:currentColor;min-width:calc(2ch + 1px);height:calc(100% - 2px);font:inherit;box-sizing:content-box;appearance:textfield;background:0 0;border:0;padding:1px;position:relative}.react-datetime-picker__inputGroup__input::-webkit-outer-spin-button{appearance:none;margin:0}.react-datetime-picker__inputGroup__input::-webkit-inner-spin-button{appearance:none;margin:0}.react-datetime-picker__inputGroup__input--hasLeadingZero{margin-left:-.54em;padding-left:calc(1px + .54em)}.react-datetime-picker__button{border:0;padding:4px 4px 4px 7px}.react-datetime-picker__button:hover{background:0 0}.react-datetime-picker__calendar--closed,.react-datetime-picker__clock--closed{display:none}.react-datetime-picker__calendar,.react-datetime-picker__clock{z-index:1}.react-datetime-picker__inputGroup__input:invalid{background:#ff00001a}.react-datetime-picker__inputGroup__amPm{font:inherit;appearance:menulist}.react-datetime-picker__calendar{width:350px;max-width:100vw}.react-datetime-picker__calendar .react-calendar{border-width:thin}.react-date-picker__inputGroup__input:invalid,.react-datetime-picker__inputGroup__input:invalid{background:unset}.dateTimePicker__time-display{margin-top:8px;display:flex}.dateTimePicker__wrapper{display:inline-block}}.react-datetime-picker,.react-datetime-picker *,.react-datetime-picker :before,.react-datetime-picker :after{box-sizing:border-box}
1
+ @layer craftsman-base{.react-datetime-picker__wrapper:focus{box-shadow:none;outline:0}.react-datetime-picker__wrapper{color:var(--text);border:1px solid var(--gray400);padding:calc(var(--w-gutter) * .5);background-color:var(--white);border-radius:6px}[type=number].react-datetime-picker__wrapper::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}[type=number].react-datetime-picker__wrapper::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}[type=number].react-datetime-picker__wrapper{appearance:textfield}.react-datetime-picker__wrapper:disabled,.disabled.react-datetime-picker__wrapper{border-color:var(--gray200);background-color:var(--gray100)}}.react-datetime-picker,.react-datetime-picker *,.react-datetime-picker :before,.react-datetime-picker :after{box-sizing:border-box}@layer craftsman-component{.react-datetime-picker{display:inline-flex;position:relative}.react-datetime-picker--disabled{color:#6d6d6d;background-color:#f0f0f0}.react-datetime-picker__wrapper{flex-grow:1;flex-shrink:0;padding:6px 8px;display:flex}.react-datetime-picker__inputGroup{box-sizing:content-box;flex-grow:1;padding:0 2px}.react-datetime-picker__inputGroup__divider{white-space:pre;padding:1px 0}.react-datetime-picker__inputGroup__divider,.react-datetime-picker__inputGroup__leadingZero{font:inherit;display:inline-block}.react-datetime-picker__inputGroup__input{text-align:center;color:currentColor;min-width:calc(2ch + 1px);height:calc(100% - 2px);font:inherit;box-sizing:content-box;appearance:textfield;background:0 0;border:0;padding:1px;position:relative}[name=year].react-datetime-picker__inputGroup__input{min-width:calc(4ch + 2px)}.react-datetime-picker__inputGroup__input:disabled{background-color:unset}.react-datetime-picker__inputGroup__input::-webkit-outer-spin-button{appearance:none;margin:0}.react-datetime-picker__inputGroup__input::-webkit-inner-spin-button{appearance:none;margin:0}.react-datetime-picker__inputGroup__input--hasLeadingZero{margin-left:-.54em;padding-left:calc(1px + .54em)}.react-datetime-picker__button{border:0;padding:4px 4px 4px 7px}.react-datetime-picker__button:hover{background:0 0}.react-datetime-picker__calendar--closed,.react-datetime-picker__clock--closed{display:none}.react-datetime-picker__calendar,.react-datetime-picker__clock{z-index:1}.react-datetime-picker__inputGroup__input:invalid{background:#ff00001a}.react-datetime-picker__inputGroup__amPm{font:inherit;appearance:menulist}.react-datetime-picker__calendar{width:350px;max-width:100vw}.react-datetime-picker__calendar .react-calendar{border-width:thin}.react-date-picker__inputGroup__input:invalid,.react-datetime-picker__inputGroup__input:invalid{background:unset}.dateTimePicker__time-display{margin-top:8px;display:flex}.dateTimePicker__wrapper{display:inline-block}}
@@ -1,8 +1,8 @@
1
1
  @use "../../styles/global/components/input";
2
2
  @use "../../styles/utilities/_functions" as u;
3
3
  @use "../../styles/utilities/_placeholders";
4
- @use "../DatePicker/_DateTimePicker";
5
- @layer craftsman-base {
4
+ @use "../DatePicker/_DatePicker";
5
+ @layer craftsman-component {
6
6
  .react-datetime-picker,
7
7
  .react-datetime-picker *,
8
8
  .react-datetime-picker *:before,
@@ -21,6 +21,7 @@ Behavior notes:
21
21
  - `id` is preserved; if omitted, a stable React `useId` value is used.
22
22
  - Floating-label behavior is supported when `labelPosition="inside"`.
23
23
  - `endAdornment` exists as an internal extension point used by `InputPassword`; consumer apps should prefer `InputPassword` rather than wiring password toggles on `Input`.
24
+ - `preAdornment` is an internal extension point used by `InputNumber` for its decrement button; consumer apps should prefer `InputNumber` rather than wiring stepper buttons on `Input` directly.
24
25
 
25
26
  Example:
26
27
 
@@ -1 +1 @@
1
- @layer craftsman-base{.input-wrapper label .input-label{margin-bottom:calc(var(--w-gutter) * .25)}.input-wrapper[data-required=true] label .input-label:after{content:"*";color:var(--red700)}.input-wrapper[data-label-position=left] label{align-items:center;display:inline-flex}.input-wrapper[data-label-position=left] label .input-label{width:fit-content;margin-right:calc(var(--w-gutter) * .75)}.input-wrapper[data-label-position=left].textarea label{align-items:flex-start}.input-wrapper[data-label-position=bottom] label{flex-direction:column-reverse;align-items:flex-start;display:inline-flex}.input-wrapper[data-label-position=bottom] label .input-label{margin-bottom:0;margin-top:calc(var(--w-gutter) * .25)}.input-wrapper[data-label-position=right] label{flex-direction:row-reverse;align-items:baseline;display:inline-flex}.input-wrapper[data-label-position=right] label .input-label{margin-left:calc(var(--w-gutter) * .25);margin-bottom:0}.input-wrapper[data-label-position=inside]{--react-international-phone-height:50px;--react-international-phone-border-radius:8px;--react-international-phone-border-color:silver;position:relative}.input-wrapper[data-label-position=inside] .input-label{background-color:var(--white);z-index:1;width:fit-content;top:calc(var(--w-gutter) * .25);left:calc(var(--w-gutter) * .25);pointer-events:none;padding:0 5px;transition:top .15s,left .15s,font-size .15s,color .15s;position:absolute}.input-wrapper[data-label-position=inside]>label>.input-field>.input,.input-wrapper[data-label-position=inside]>.input{transition:border-color .2s}.input-wrapper[data-label-position=inside]:focus-within .input-label{top:-.5rem;left:calc(var(--w-gutter) * .125);font-size:calc(var(--w-text) * .75);color:var(--blue500)}.input-wrapper[data-label-position=inside]:focus-within .input{border-color:var(--blue500)}.input-wrapper[data-label-position=inside]:focus-within .input::placeholder{opacity:1}.input-wrapper[data-label-position=inside][data-has-input=true] .input-label{top:-.5rem;left:calc(var(--w-gutter) * .125);font-size:calc(var(--w-text) * .75)}.input-wrapper[data-label-position=inside] .input[type=tel]{width:100%}.input-wrapper[data-label-position=inside] .input::placeholder{opacity:0;transition:opacity .2s}.input-wrapper .input-field{align-items:center;display:inline-flex;position:relative}.input-wrapper .input-field[data-has-end-adornment=true]>.input{width:100%;padding-right:calc(var(--w-gutter) * 1.5)}.input-wrapper .input-adornment{right:calc(var(--w-gutter) * .5);z-index:1;align-items:center;margin-top:0;display:inline-flex;position:absolute;top:50%;transform:translateY(-50%)}.input-wrapper .input-error{margin-top:calc(var(--w-gutter) * .25);font-size:calc(var(--w-text) * .75);color:var(--red600)}.input-wrapper .input-view-toggle{align-items:"center";padding:0;line-height:1;display:inline-flex}}
1
+ @layer craftsman-base{.input-pre-adornment,.input-end-adornment{z-index:1;align-items:center;margin-top:0;display:inline-flex;position:absolute;top:50%;transform:translateY(-50%)}.input-wrapper label .input-label{margin-bottom:calc(var(--w-gutter) * .25)}.input-wrapper[data-required=true] label .input-label:after{content:"*";color:var(--red700)}.input-wrapper[data-label-position=left] label{align-items:center;display:inline-flex}.input-wrapper[data-label-position=left] label .input-label{width:fit-content;margin-right:calc(var(--w-gutter) * .75)}.input-wrapper[data-label-position=left].textarea label{align-items:flex-start}.input-wrapper[data-label-position=bottom] label{flex-direction:column-reverse;align-items:flex-start;display:inline-flex}.input-wrapper[data-label-position=bottom] label .input-label{margin-bottom:0;margin-top:calc(var(--w-gutter) * .25)}.input-wrapper[data-label-position=right] label{flex-direction:row-reverse;align-items:baseline;display:inline-flex}.input-wrapper[data-label-position=right] label .input-label{margin-left:calc(var(--w-gutter) * .25);margin-bottom:0}.input-wrapper[data-label-position=inside]{--react-international-phone-height:50px;--react-international-phone-border-radius:8px;--react-international-phone-border-color:silver;position:relative}.input-wrapper[data-label-position=inside] .input-label{background-color:var(--white);z-index:1;width:fit-content;top:calc(var(--w-gutter) * .45);left:calc(var(--w-gutter) * .25);pointer-events:none;padding:0 5px;transition:top .15s,left .15s,font-size .15s,color .15s;position:absolute}.input-wrapper[data-label-position=inside]>label>.input-field>.input,.input-wrapper[data-label-position=inside]>.input{transition:border-color .2s}.input-wrapper[data-label-position=inside]:focus-within .input-label{top:-.5rem;left:calc(var(--w-gutter) * .125);font-size:calc(var(--w-text) * .75);color:var(--blue500)}.input-wrapper[data-label-position=inside]:focus-within .input{border-color:var(--blue500)}.input-wrapper[data-label-position=inside]:focus-within .input::placeholder{opacity:1}.input-wrapper[data-label-position=inside][data-has-input=true] .input-label{top:-.5rem;left:calc(var(--w-gutter) * .125);font-size:calc(var(--w-text) * .75)}.input-wrapper[data-label-position=inside] .input[type=tel]{width:100%}.input-wrapper[data-label-position=inside] .input::placeholder{opacity:0;transition:opacity .2s}.input-field{align-items:center;display:inline-flex;position:relative}.input-field[data-has-end-adornment=true]>.input{padding-right:calc(var(--w-gutter) * 1.5)}.input-field[data-has-pre-adornment=true]>.input{padding-left:calc(var(--w-gutter) * 2.25)}.input-end-adornment{right:calc(var(--w-gutter) * .5)}.input-pre-adornment{left:calc(var(--w-gutter) * .5)}.input-error{margin-top:calc(var(--w-gutter) * .25);font-size:calc(var(--w-text) * .75);color:var(--red600)}.input-view-toggle{align-items:"center";padding:0;line-height:1;display:inline-flex}}