@dashforge/tw 1.4.0 → 1.5.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 (45) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/dist/index.esm.js +304 -219
  3. package/dist/src/components/Autocomplete/Autocomplete.d.ts.map +1 -1
  4. package/dist/src/components/Autocomplete/autocomplete.types.d.ts +10 -1
  5. package/dist/src/components/Autocomplete/autocomplete.types.d.ts.map +1 -1
  6. package/dist/src/components/Checkbox/Checkbox.d.ts.map +1 -1
  7. package/dist/src/components/Checkbox/checkbox.types.d.ts +10 -1
  8. package/dist/src/components/Checkbox/checkbox.types.d.ts.map +1 -1
  9. package/dist/src/components/DatePicker/DatePicker.d.ts.map +1 -1
  10. package/dist/src/components/DatePicker/datePicker.types.d.ts +10 -1
  11. package/dist/src/components/DatePicker/datePicker.types.d.ts.map +1 -1
  12. package/dist/src/components/DateRangePicker/DateRangePicker.d.ts.map +1 -1
  13. package/dist/src/components/DateRangePicker/dateRangePicker.types.d.ts +10 -1
  14. package/dist/src/components/DateRangePicker/dateRangePicker.types.d.ts.map +1 -1
  15. package/dist/src/components/DateTimePicker/DateTimePicker.d.ts.map +1 -1
  16. package/dist/src/components/DateTimePicker/dateTimePicker.types.d.ts +10 -1
  17. package/dist/src/components/DateTimePicker/dateTimePicker.types.d.ts.map +1 -1
  18. package/dist/src/components/NumberField/NumberField.d.ts.map +1 -1
  19. package/dist/src/components/NumberField/numberField.types.d.ts +10 -1
  20. package/dist/src/components/NumberField/numberField.types.d.ts.map +1 -1
  21. package/dist/src/components/OTPField/OTPField.d.ts.map +1 -1
  22. package/dist/src/components/OTPField/otpField.types.d.ts +10 -1
  23. package/dist/src/components/OTPField/otpField.types.d.ts.map +1 -1
  24. package/dist/src/components/RadioGroup/RadioGroup.d.ts.map +1 -1
  25. package/dist/src/components/RadioGroup/radioGroup.types.d.ts +10 -1
  26. package/dist/src/components/RadioGroup/radioGroup.types.d.ts.map +1 -1
  27. package/dist/src/components/Select/Select.d.ts.map +1 -1
  28. package/dist/src/components/Select/select.types.d.ts +10 -1
  29. package/dist/src/components/Select/select.types.d.ts.map +1 -1
  30. package/dist/src/components/Switch/Switch.d.ts.map +1 -1
  31. package/dist/src/components/Switch/switch.types.d.ts +10 -1
  32. package/dist/src/components/Switch/switch.types.d.ts.map +1 -1
  33. package/dist/src/components/TextField/TextField.d.ts.map +1 -1
  34. package/dist/src/components/TextField/textField.types.d.ts +11 -1
  35. package/dist/src/components/TextField/textField.types.d.ts.map +1 -1
  36. package/dist/src/components/Textarea/Textarea.d.ts.map +1 -1
  37. package/dist/src/components/Textarea/textarea.types.d.ts +10 -1
  38. package/dist/src/components/Textarea/textarea.types.d.ts.map +1 -1
  39. package/dist/src/components/TimePicker/TimePicker.d.ts.map +1 -1
  40. package/dist/src/components/TimePicker/timePicker.types.d.ts +10 -1
  41. package/dist/src/components/TimePicker/timePicker.types.d.ts.map +1 -1
  42. package/dist/src/components/_shared/fieldTooltip.d.ts +49 -0
  43. package/dist/src/components/_shared/fieldTooltip.d.ts.map +1 -0
  44. package/dist/src/index.d.ts +1 -1
  45. package/package.json +3 -3
@@ -2,6 +2,7 @@ import type { ChangeEventHandler, FocusEventHandler, ReactNode, TextareaHTMLAttr
2
2
  import type { Engine } from '@dashforge/ui-core';
3
3
  import type { AccessRequirement } from '@dashforge/rbac';
4
4
  import type { TextareaVariants } from './textarea.variants.js';
5
+ import type { FieldTooltipProp } from '../_shared/fieldTooltip.js';
5
6
  /**
6
7
  * Subset of `<Textarea>` props theme-configurable via
7
8
  * `theme.components.Textarea.defaults` (Option C).
@@ -10,7 +11,9 @@ export type TextareaVariantProps = Pick<TextareaVariants, 'size' | 'layout' | 'f
10
11
  declare module '@dashforge/tw-tokens' {
11
12
  interface TWComponentDefaults {
12
13
  Textarea?: {
13
- defaults?: Partial<TextareaVariantProps>;
14
+ defaults?: Partial<TextareaVariantProps> & {
15
+ tooltip?: FieldTooltipProp;
16
+ };
14
17
  slotProps?: TextareaSlotProps;
15
18
  };
16
19
  }
@@ -74,6 +77,12 @@ export interface TextareaProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaE
74
77
  rules?: unknown;
75
78
  /** Visible label above (or left of, per `layout`) the textarea. */
76
79
  label?: ReactNode;
80
+ /**
81
+ * Optional label-help tooltip (ⓘ in the label row). String or
82
+ * `{ content, icon?, position?, side? }`. Theme default via
83
+ * `theme.components.Textarea.defaults.tooltip`.
84
+ */
85
+ tooltip?: FieldTooltipProp;
77
86
  /** Helper line below the textarea. Auto-replaced by bridge error when invalid. */
78
87
  helperText?: ReactNode;
79
88
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"textarea.types.d.ts","sourceRoot":"","sources":["../../../../src/components/Textarea/textarea.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EACjB,SAAS,EACT,sBAAsB,EACvB,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,IAAI,CACrC,gBAAgB,EAChB,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAC3C,CAAC;AAEF,OAAO,QAAQ,sBAAsB,CAAC;IACpC,UAAU,mBAAmB;QAC3B,QAAQ,CAAC,EAAE;YACT,QAAQ,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;YACzC,SAAS,CAAC,EAAE,iBAAiB,CAAC;SAC/B,CAAC;KACH;CACF;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,KAAK,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/B,YAAY,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,YAAY,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,KAAK,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/B,UAAU,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpC,SAAS,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACpC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,aACf,SAAQ,IAAI,CACR,sBAAsB,CAAC,mBAAmB,CAAC,EAC3C,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,cAAc,CACnE;IACH;;;OAGG;IACH,IAAI,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAEhC;;;;OAIG;IACH,MAAM,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAEpC;;;OAGG;IACH,SAAS,CAAC,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAE1C;;;OAGG;IACH,MAAM,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAEpC,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IAEb,8DAA8D;IAC9D,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,mEAAmE;IACnE,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB,kFAAkF;IAClF,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,wEAAwE;IACxE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IAC1C,mEAAmE;IACnE,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,oEAAoE;IACpE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,oCAAoC;IACpC,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;IACnD,kEAAkE;IAClE,MAAM,CAAC,EAAE,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;IAChD,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf"}
1
+ {"version":3,"file":"textarea.types.d.ts","sourceRoot":"","sources":["../../../../src/components/Textarea/textarea.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EACjB,SAAS,EACT,sBAAsB,EACvB,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,IAAI,CACrC,gBAAgB,EAChB,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAC3C,CAAC;AAEF,OAAO,QAAQ,sBAAsB,CAAC;IACpC,UAAU,mBAAmB;QAC3B,QAAQ,CAAC,EAAE;YACT,QAAQ,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG;gBAAE,OAAO,CAAC,EAAE,gBAAgB,CAAA;aAAE,CAAC;YAC1E,SAAS,CAAC,EAAE,iBAAiB,CAAC;SAC/B,CAAC;KACH;CACF;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,KAAK,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/B,YAAY,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,YAAY,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,KAAK,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/B,UAAU,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpC,SAAS,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACpC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,aACf,SAAQ,IAAI,CACR,sBAAsB,CAAC,mBAAmB,CAAC,EAC3C,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,cAAc,CACnE;IACH;;;OAGG;IACH,IAAI,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAEhC;;;;OAIG;IACH,MAAM,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAEpC;;;OAGG;IACH,SAAS,CAAC,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAE1C;;;OAGG;IACH,MAAM,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAEpC,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IAEb,8DAA8D;IAC9D,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,mEAAmE;IACnE,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;;;OAIG;IACH,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAE3B,kFAAkF;IAClF,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,wEAAwE;IACxE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IAC1C,mEAAmE;IACnE,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,oEAAoE;IACpE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,oCAAoC;IACpC,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;IACnD,kEAAkE;IAClE,MAAM,CAAC,EAAE,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;IAChD,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf"}
@@ -1 +1 @@
1
- {"version":3,"file":"TimePicker.d.ts","sourceRoot":"","sources":["../../../../src/components/TimePicker/TimePicker.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAkB7D;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,eAAe,kDA2OjD"}
1
+ {"version":3,"file":"TimePicker.d.ts","sourceRoot":"","sources":["../../../../src/components/TimePicker/TimePicker.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAkB7D;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,eAAe,kDAgPjD"}
@@ -1,6 +1,7 @@
1
1
  import type { ReactNode } from 'react';
2
2
  import type { Engine } from '@dashforge/ui-core';
3
3
  import type { AccessRequirement } from '@dashforge/rbac';
4
+ import type { FieldTooltipProp } from '../_shared/fieldTooltip.js';
4
5
  /** Per-slot `className` overrides for `<TimePicker>`. */
5
6
  export interface TimePickerSlotProps {
6
7
  root?: {
@@ -44,7 +45,9 @@ export interface TimePickerVariantProps {
44
45
  declare module '@dashforge/tw-tokens' {
45
46
  interface TWComponentDefaults {
46
47
  TimePicker?: {
47
- defaults?: Partial<TimePickerVariantProps>;
48
+ defaults?: Partial<TimePickerVariantProps> & {
49
+ tooltip?: FieldTooltipProp;
50
+ };
48
51
  slotProps?: TimePickerSlotProps;
49
52
  };
50
53
  }
@@ -56,6 +59,12 @@ export interface TimePickerProps {
56
59
  rules?: unknown;
57
60
  /** Field label. */
58
61
  label?: ReactNode;
62
+ /**
63
+ * Optional label-help tooltip (ⓘ in the label row). String or
64
+ * `{ content, icon?, position?, side? }`. Theme default via
65
+ * `theme.components.TimePicker.defaults.tooltip`.
66
+ */
67
+ tooltip?: FieldTooltipProp;
59
68
  /** Helper text below the control (overrides a bridge error message). */
60
69
  helperText?: ReactNode;
61
70
  /** Explicit error state (overrides the bridge's auto error). */
@@ -1 +1 @@
1
- {"version":3,"file":"timePicker.types.d.ts","sourceRoot":"","sources":["../../../../src/components/TimePicker/timePicker.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,yDAAyD;AACzD,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,KAAK,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/B,YAAY,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,UAAU,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpC,SAAS,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACpC;AAED;;;;;;;;GAQG;AACH;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,OAAO,QAAQ,sBAAsB,CAAC;IACpC,UAAU,mBAAmB;QAC3B,UAAU,CAAC,EAAE;YACX,QAAQ,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;YAC3C,SAAS,CAAC,EAAE,mBAAmB,CAAC;SACjC,CAAC;KACH;CACF;AAED,MAAM,WAAW,eAAe;IAC9B,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,mBAAmB;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,wEAAwE;IACxE,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,gEAAgE;IAChE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4BAA4B;IAC5B,MAAM,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC9B,uEAAuE;IACvE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IAC1C,+BAA+B;IAC/B,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,wDAAwD;IACxD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC1C,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iEAAiE;IACjE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,kDAAkD;IAClD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0CAA0C;IAC1C,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,sCAAsC;IACtC,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
1
+ {"version":3,"file":"timePicker.types.d.ts","sourceRoot":"","sources":["../../../../src/components/TimePicker/timePicker.types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Shared "label help tooltip" building blocks for the TW form inputs.
3
+ *
4
+ * Mirrors the MUI side (`@dashforge/ui` `_internal/fieldTooltip`): the
5
+ * `tooltip` prop renders a ⓘ help trigger in the label row, revealing
6
+ * `content` on hover / focus. The default icon is a built-in inline SVG —
7
+ * no icon-library / webfont dependency, so it always renders.
8
+ *
9
+ * Supports Option C: `resolveFieldTooltip` deep-merges the per-instance
10
+ * `tooltip` over a theme default (`theme.components.<Name>.defaults.tooltip`).
11
+ *
12
+ * @internal
13
+ */
14
+ import type { ReactNode } from 'react';
15
+ /** Full config for a field's label-help tooltip. */
16
+ export interface FieldTooltipConfig {
17
+ /** Text/content shown in the popup on hover / focus. */
18
+ content: ReactNode;
19
+ /** Trigger icon. Defaults to a built-in info-circle SVG. */
20
+ icon?: ReactNode;
21
+ /** Where the icon sits relative to the label. @default 'after' */
22
+ position?: 'before' | 'after';
23
+ /** Which side the popup appears on. @default 'top' */
24
+ side?: 'top' | 'right' | 'bottom' | 'left';
25
+ }
26
+ /** `tooltip` accepts a string shorthand (→ `{ content }`) or the full config. */
27
+ export type FieldTooltipProp = string | FieldTooltipConfig;
28
+ /** Normalise `string | config` to a config (or null when absent). */
29
+ export declare function normalizeFieldTooltip(tooltip: FieldTooltipProp | undefined): FieldTooltipConfig | null;
30
+ /**
31
+ * Resolve the effective tooltip config (Option C): deep-merge the
32
+ * per-instance `tooltip` over the theme default. The instance wins per
33
+ * key, so the theme can set `icon` / `position` / `side` while the
34
+ * instance supplies just `content` (via the string shorthand).
35
+ */
36
+ export declare function resolveFieldTooltip(instance: FieldTooltipProp | undefined, themeDefault: FieldTooltipProp | undefined): FieldTooltipConfig | null;
37
+ /**
38
+ * Compose the primary label block — `label` plus its optional `required`
39
+ * mark — with the help-tooltip trigger. The required asterisk stays part
40
+ * of the primary block; the `ⓘ` is secondary and sits before/after that
41
+ * whole block. Returns the plain primary block when there is no tooltip.
42
+ *
43
+ * @param label - the label node.
44
+ * @param config - resolved tooltip config (from {@link resolveFieldTooltip}) or `null`.
45
+ * @param requiredMark - the required-asterisk node (or falsy), rendered as
46
+ * part of the primary block, immediately after the label.
47
+ */
48
+ export declare function renderLabelWithTooltip(label: ReactNode, config: FieldTooltipConfig | null, requiredMark?: ReactNode): ReactNode;
49
+ //# sourceMappingURL=fieldTooltip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fieldTooltip.d.ts","sourceRoot":"","sources":["../../../../src/components/_shared/fieldTooltip.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,oDAAoD;AACpD,MAAM,WAAW,kBAAkB;IACjC,wDAAwD;IACxD,OAAO,EAAE,SAAS,CAAC;IACnB,4DAA4D;IAC5D,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC9B,sDAAsD;IACtD,IAAI,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;CAC5C;AAED,iFAAiF;AACjF,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,kBAAkB,CAAC;AAE3D,qEAAqE;AACrE,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,gBAAgB,GAAG,SAAS,GACpC,kBAAkB,GAAG,IAAI,CAG3B;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,gBAAgB,GAAG,SAAS,EACtC,YAAY,EAAE,gBAAgB,GAAG,SAAS,GACzC,kBAAkB,GAAG,IAAI,CAO3B;AA0CD;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,kBAAkB,GAAG,IAAI,EACjC,YAAY,CAAC,EAAE,SAAS,GACvB,SAAS,CAsBX"}
@@ -195,5 +195,5 @@ export type { VariantProps } from 'tailwind-variants';
195
195
  /**
196
196
  * Package version (synced with `package.json` at publish time).
197
197
  */
198
- export declare const VERSION = "1.4.0";
198
+ export declare const VERSION = "1.5.1";
199
199
  //# sourceMappingURL=index.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dashforge/tw",
3
- "version": "1.4.0",
3
+ "version": "1.5.1",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "./dist/index.esm.js",
@@ -35,9 +35,9 @@
35
35
  "tailwind-merge": "^3.0.0",
36
36
  "tailwind-variants": "^3.1.1",
37
37
  "@dashforge/calendar-core": "1.0.0",
38
- "@dashforge/rbac": "1.0.0",
39
38
  "@dashforge/ui-core": "1.0.0",
40
- "@dashforge/forms": "1.0.0"
39
+ "@dashforge/forms": "1.0.0",
40
+ "@dashforge/rbac": "1.0.0"
41
41
  },
42
42
  "peerDependencies": {
43
43
  "react": "^18.0.0 || ^19.0.0",