@donotdev/crud 0.0.9 → 0.0.11

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 (194) hide show
  1. package/dist/CrudService.d.ts +26 -8
  2. package/dist/CrudService.d.ts.map +1 -1
  3. package/dist/CrudService.js +1 -1
  4. package/dist/CrudStore.d.ts.map +1 -1
  5. package/dist/CrudStore.js +1 -1
  6. package/dist/adapters/FirestoreAdapter.d.ts +1 -1
  7. package/dist/adapters/FirestoreAdapter.d.ts.map +1 -1
  8. package/dist/adapters/FirestoreAdapter.js +1 -1
  9. package/dist/adapters/FunctionsAdapter.d.ts +1 -1
  10. package/dist/adapters/FunctionsAdapter.d.ts.map +1 -1
  11. package/dist/adapters/FunctionsAdapter.js +1 -1
  12. package/dist/builtinFieldTypes.d.ts +17 -4
  13. package/dist/builtinFieldTypes.d.ts.map +1 -1
  14. package/dist/builtinFieldTypes.js +1 -1
  15. package/dist/components/DisplayFieldRenderer.d.ts +2 -0
  16. package/dist/components/DisplayFieldRenderer.d.ts.map +1 -1
  17. package/dist/components/DisplayFieldRenderer.js +1 -1
  18. package/dist/components/EntityDisplayRenderer.d.ts +2 -2
  19. package/dist/components/EntityDisplayRenderer.d.ts.map +1 -1
  20. package/dist/components/EntityDisplayRenderer.js +1 -1
  21. package/dist/components/EntityFilters.d.ts +19 -1
  22. package/dist/components/EntityFilters.d.ts.map +1 -1
  23. package/dist/components/EntityFilters.js +1 -1
  24. package/dist/components/FormFieldRenderer.d.ts.map +1 -1
  25. package/dist/components/FormFieldRenderer.js +1 -1
  26. package/dist/components/controlled/input/ControlledCurrencyField.d.ts +8 -0
  27. package/dist/components/controlled/input/ControlledCurrencyField.d.ts.map +1 -0
  28. package/dist/components/controlled/input/ControlledCurrencyField.js +1 -0
  29. package/dist/components/controlled/input/ControlledDurationField.d.ts +7 -0
  30. package/dist/components/controlled/input/ControlledDurationField.d.ts.map +1 -0
  31. package/dist/components/controlled/input/ControlledDurationField.js +1 -0
  32. package/dist/components/controlled/input/ControlledGdprConsentField.d.ts.map +1 -1
  33. package/dist/components/controlled/input/ControlledGdprConsentField.js +1 -1
  34. package/dist/components/controlled/input/ControlledPriceField.d.ts +8 -0
  35. package/dist/components/controlled/input/ControlledPriceField.d.ts.map +1 -0
  36. package/dist/components/controlled/input/ControlledPriceField.js +1 -0
  37. package/dist/components/controlled/input/ControlledRatingField.d.ts +8 -0
  38. package/dist/components/controlled/input/ControlledRatingField.d.ts.map +1 -0
  39. package/dist/components/controlled/input/ControlledRatingField.js +1 -0
  40. package/dist/components/controlled/input/index.d.ts +4 -0
  41. package/dist/components/controlled/input/index.d.ts.map +1 -1
  42. package/dist/components/controlled/input/index.js +1 -1
  43. package/dist/components/controlled/select/ControlledYearField.js +1 -1
  44. package/dist/components/fields/display/AvatarFieldDisplay.d.ts +23 -0
  45. package/dist/components/fields/display/AvatarFieldDisplay.d.ts.map +1 -0
  46. package/dist/components/fields/display/AvatarFieldDisplay.js +1 -0
  47. package/dist/components/fields/display/BadgeFieldDisplay.d.ts +21 -0
  48. package/dist/components/fields/display/BadgeFieldDisplay.d.ts.map +1 -0
  49. package/dist/components/fields/display/BadgeFieldDisplay.js +1 -0
  50. package/dist/components/fields/display/ButtonFieldDisplay.d.ts +29 -0
  51. package/dist/components/fields/display/ButtonFieldDisplay.d.ts.map +1 -0
  52. package/dist/components/fields/display/ButtonFieldDisplay.js +1 -0
  53. package/dist/components/fields/display/CheckboxFieldDisplay.d.ts +21 -0
  54. package/dist/components/fields/display/CheckboxFieldDisplay.d.ts.map +1 -0
  55. package/dist/components/fields/display/CheckboxFieldDisplay.js +1 -0
  56. package/dist/components/fields/display/DateFieldDisplay.d.ts +24 -0
  57. package/dist/components/fields/display/DateFieldDisplay.d.ts.map +1 -0
  58. package/dist/components/fields/display/DateFieldDisplay.js +1 -0
  59. package/dist/components/fields/display/DropdownDisplay.d.ts +21 -0
  60. package/dist/components/fields/display/DropdownDisplay.d.ts.map +1 -0
  61. package/dist/components/fields/display/DropdownDisplay.js +1 -0
  62. package/dist/components/fields/display/FileFieldDisplay.d.ts +21 -0
  63. package/dist/components/fields/display/FileFieldDisplay.d.ts.map +1 -0
  64. package/dist/components/fields/display/FileFieldDisplay.js +1 -0
  65. package/dist/components/fields/display/GeoPointFieldDisplay.d.ts +25 -0
  66. package/dist/components/fields/display/GeoPointFieldDisplay.d.ts.map +1 -0
  67. package/dist/components/fields/display/GeoPointFieldDisplay.js +1 -0
  68. package/dist/components/fields/display/HiddenFieldDisplay.d.ts +30 -0
  69. package/dist/components/fields/display/HiddenFieldDisplay.d.ts.map +1 -0
  70. package/dist/components/fields/display/HiddenFieldDisplay.js +1 -0
  71. package/dist/components/fields/display/ImageFieldDisplay.d.ts +24 -0
  72. package/dist/components/fields/display/ImageFieldDisplay.d.ts.map +1 -0
  73. package/dist/components/fields/display/ImageFieldDisplay.js +1 -0
  74. package/dist/components/fields/display/LinkFieldDisplay.d.ts +22 -0
  75. package/dist/components/fields/display/LinkFieldDisplay.d.ts.map +1 -0
  76. package/dist/components/fields/display/LinkFieldDisplay.js +1 -0
  77. package/dist/components/fields/display/MapFieldDisplay.d.ts +25 -0
  78. package/dist/components/fields/display/MapFieldDisplay.d.ts.map +1 -0
  79. package/dist/components/fields/display/MapFieldDisplay.js +1 -0
  80. package/dist/components/fields/display/MultiDropdownDisplay.d.ts +22 -0
  81. package/dist/components/fields/display/MultiDropdownDisplay.d.ts.map +1 -0
  82. package/dist/components/fields/display/MultiDropdownDisplay.js +1 -0
  83. package/dist/components/fields/display/MultiInputTextFieldDisplay.d.ts +22 -0
  84. package/dist/components/fields/display/MultiInputTextFieldDisplay.d.ts.map +1 -0
  85. package/dist/components/fields/display/MultiInputTextFieldDisplay.js +1 -0
  86. package/dist/components/fields/display/NumberFieldDisplay.d.ts +24 -0
  87. package/dist/components/fields/display/NumberFieldDisplay.d.ts.map +1 -0
  88. package/dist/components/fields/display/NumberFieldDisplay.js +1 -0
  89. package/dist/components/fields/display/PasswordFieldDisplay.d.ts +24 -0
  90. package/dist/components/fields/display/PasswordFieldDisplay.d.ts.map +1 -0
  91. package/dist/components/fields/display/PasswordFieldDisplay.js +1 -0
  92. package/dist/components/fields/display/PhoneNumberDisplay.d.ts +22 -0
  93. package/dist/components/fields/display/PhoneNumberDisplay.d.ts.map +1 -0
  94. package/dist/components/fields/display/PhoneNumberDisplay.js +1 -0
  95. package/dist/components/fields/display/RadioFieldDisplay.d.ts +22 -0
  96. package/dist/components/fields/display/RadioFieldDisplay.d.ts.map +1 -0
  97. package/dist/components/fields/display/RadioFieldDisplay.js +1 -0
  98. package/dist/components/fields/display/RangeFieldDisplay.d.ts +22 -0
  99. package/dist/components/fields/display/RangeFieldDisplay.d.ts.map +1 -0
  100. package/dist/components/fields/display/RangeFieldDisplay.js +1 -0
  101. package/dist/components/fields/display/ReferenceFieldDisplay.d.ts +22 -0
  102. package/dist/components/fields/display/ReferenceFieldDisplay.d.ts.map +1 -0
  103. package/dist/components/fields/display/ReferenceFieldDisplay.js +1 -0
  104. package/dist/components/fields/display/RichTextDisplay.d.ts +25 -0
  105. package/dist/components/fields/display/RichTextDisplay.d.ts.map +1 -0
  106. package/dist/components/fields/display/RichTextDisplay.js +61 -0
  107. package/dist/components/fields/display/TextAreaDisplay.d.ts +22 -0
  108. package/dist/components/fields/display/TextAreaDisplay.d.ts.map +1 -0
  109. package/dist/components/fields/display/TextAreaDisplay.js +1 -0
  110. package/dist/components/fields/display/TextFieldDisplay.d.ts +42 -0
  111. package/dist/components/fields/display/TextFieldDisplay.d.ts.map +1 -0
  112. package/dist/components/fields/display/TextFieldDisplay.js +1 -0
  113. package/dist/components/fields/display/TimestampFieldDisplay.d.ts +22 -0
  114. package/dist/components/fields/display/TimestampFieldDisplay.d.ts.map +1 -0
  115. package/dist/components/fields/display/TimestampFieldDisplay.js +1 -0
  116. package/dist/components/fields/display/index.d.ts +32 -0
  117. package/dist/components/fields/display/index.d.ts.map +1 -0
  118. package/dist/components/fields/display/index.js +1 -0
  119. package/dist/components/form/fields/ComboboxComponent.d.ts +6 -0
  120. package/dist/components/form/fields/ComboboxComponent.d.ts.map +1 -1
  121. package/dist/components/form/fields/ComboboxComponent.js +1 -1
  122. package/dist/components/form/fields/DurationFieldComponent.d.ts +42 -0
  123. package/dist/components/form/fields/DurationFieldComponent.d.ts.map +1 -0
  124. package/dist/components/form/fields/DurationFieldComponent.js +1 -0
  125. package/dist/components/form/fields/GdprConsentFieldComponent.d.ts +2 -2
  126. package/dist/components/form/fields/GdprConsentFieldComponent.d.ts.map +1 -1
  127. package/dist/components/form/fields/GdprConsentFieldComponent.js +1 -1
  128. package/dist/components/form/fields/PriceFieldComponent.d.ts +34 -0
  129. package/dist/components/form/fields/PriceFieldComponent.d.ts.map +1 -0
  130. package/dist/components/form/fields/PriceFieldComponent.js +1 -0
  131. package/dist/components/form/fields/RatingFieldComponent.d.ts +37 -0
  132. package/dist/components/form/fields/RatingFieldComponent.d.ts.map +1 -0
  133. package/dist/components/form/fields/RatingFieldComponent.js +1 -0
  134. package/dist/components/form/fields/index.d.ts +7 -0
  135. package/dist/components/form/fields/index.d.ts.map +1 -1
  136. package/dist/components/form/fields/index.js +1 -1
  137. package/dist/components/index.d.ts +3 -9
  138. package/dist/components/index.d.ts.map +1 -1
  139. package/dist/components/index.js +1 -1
  140. package/dist/fieldTypeRegistry.d.ts +92 -0
  141. package/dist/fieldTypeRegistry.d.ts.map +1 -0
  142. package/dist/fieldTypeRegistry.js +1 -0
  143. package/dist/forms/hooks/useEntityForm.d.ts.map +1 -1
  144. package/dist/forms/hooks/useEntityForm.js +1 -1
  145. package/dist/forms/types.d.ts +5 -3
  146. package/dist/forms/types.d.ts.map +1 -1
  147. package/dist/forms/utils/getFieldsForOperation.d.ts +2 -3
  148. package/dist/forms/utils/getFieldsForOperation.d.ts.map +1 -1
  149. package/dist/forms/utils/getFieldsForOperation.js +1 -1
  150. package/dist/forms/utils/isFieldEditable.d.ts +1 -1
  151. package/dist/forms/utils/isFieldEditable.d.ts.map +1 -1
  152. package/dist/hooks/index.d.ts +5 -0
  153. package/dist/hooks/index.d.ts.map +1 -1
  154. package/dist/hooks/index.js +1 -1
  155. package/dist/hooks/useEntityFavorites.d.ts +53 -0
  156. package/dist/hooks/useEntityFavorites.d.ts.map +1 -0
  157. package/dist/hooks/useEntityFavorites.js +1 -0
  158. package/dist/hooks/useRelatedItems.d.ts +37 -0
  159. package/dist/hooks/useRelatedItems.d.ts.map +1 -0
  160. package/dist/hooks/useRelatedItems.js +1 -0
  161. package/dist/index.d.ts +4 -3
  162. package/dist/index.d.ts.map +1 -1
  163. package/dist/index.js +1 -1
  164. package/dist/registerBuiltinFieldTypes.d.ts +6 -0
  165. package/dist/registerBuiltinFieldTypes.d.ts.map +1 -0
  166. package/dist/registerBuiltinFieldTypes.js +1 -0
  167. package/dist/tsconfig.tsbuildinfo +1 -1
  168. package/dist/types.d.ts +60 -25
  169. package/dist/types.d.ts.map +1 -1
  170. package/dist/useBaseCrudList.d.ts +53 -0
  171. package/dist/useBaseCrudList.d.ts.map +1 -0
  172. package/dist/useBaseCrudList.js +1 -0
  173. package/dist/useCrud.d.ts +3 -6
  174. package/dist/useCrud.d.ts.map +1 -1
  175. package/dist/useCrud.js +1 -1
  176. package/dist/useCrudCardList.d.ts +10 -4
  177. package/dist/useCrudCardList.d.ts.map +1 -1
  178. package/dist/useCrudCardList.js +1 -1
  179. package/dist/useCrudList.d.ts +12 -5
  180. package/dist/useCrudList.d.ts.map +1 -1
  181. package/dist/useCrudList.js +1 -1
  182. package/dist/utils/mergeWithOptimistic.d.ts +4 -5
  183. package/dist/utils/mergeWithOptimistic.d.ts.map +1 -1
  184. package/dist/utils/mergeWithOptimistic.js +1 -1
  185. package/dist/utils/scopeUtils.d.ts +38 -0
  186. package/dist/utils/scopeUtils.d.ts.map +1 -0
  187. package/dist/utils/scopeUtils.js +1 -0
  188. package/package.json +15 -14
  189. package/dist/components/EntityCardList.d.ts +0 -29
  190. package/dist/components/EntityCardList.d.ts.map +0 -1
  191. package/dist/components/EntityCardList.js +0 -1
  192. package/dist/components/EntityList.d.ts +0 -30
  193. package/dist/components/EntityList.d.ts.map +0 -1
  194. package/dist/components/EntityList.js +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NumberFieldDisplay.d.ts","sourceRoot":"","sources":["../../../../src/components/fields/display/NumberFieldDisplay.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,MAAM,WAAW,uBAAuB;IACtC,0BAA0B;IAC1B,MAAM,EAAE,WAAW,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC;IACxC,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,MAAM,CAAC;IAC1D,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,aAAa,CAAC,uBAAuB,CAwBrE,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1 @@
1
+ import{jsx as e}from"react/jsx-runtime";import{Text as t,Spinner as o}from"@donotdev/components";const s=({config:a,value:n,t:f,className:r,loading:i=!1})=>i?e(o,{className:r}):n==null?e(t,{as:"span",variant:"muted",className:r,children:"-"}):e(t,{as:"span",className:`font-mono ${r||""}`,children:n.toLocaleString()});var p=s;export{s as NumberFieldDisplay,p as default};
@@ -0,0 +1,24 @@
1
+ import type { EntityField } from '@donotdev/core';
2
+ import type { ComponentType } from 'react';
3
+ export interface PasswordFieldDisplayProps {
4
+ /** Field configuration */
5
+ config: EntityField<'password'>;
6
+ /** Value to display */
7
+ value: string;
8
+ /** Translation function */
9
+ t: (key: string, options?: Record<string, any>) => string;
10
+ /** Additional CSS classes */
11
+ className?: string;
12
+ /** Whether the field is loading */
13
+ loading?: boolean;
14
+ }
15
+ /**
16
+ * PasswordFieldDisplay - Displays password values with show/hide toggle and copy functionality
17
+ *
18
+ * @version 0.0.1
19
+ * @since 0.0.1
20
+ * @author AMBROISE PARK Consulting
21
+ */
22
+ export declare const PasswordFieldDisplay: ComponentType<PasswordFieldDisplayProps>;
23
+ export default PasswordFieldDisplay;
24
+ //# sourceMappingURL=PasswordFieldDisplay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PasswordFieldDisplay.d.ts","sourceRoot":"","sources":["../../../../src/components/fields/display/PasswordFieldDisplay.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,MAAM,WAAW,yBAAyB;IACxC,0BAA0B;IAC1B,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IAChC,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,MAAM,CAAC;IAC1D,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAAC,yBAAyB,CAwCzE,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
@@ -0,0 +1 @@
1
+ import{jsx as o,jsxs as s}from"react/jsx-runtime";import{Eye as d,EyeOff as n}from"lucide-react";import{useState as c}from"react";import{Skeleton as f,Button as m,CopyToClipboard as y,Stack as a}from"@donotdev/components";const x=({config:b,value:i,t:r,className:t,loading:p=!1})=>{const[e,l]=c(!1);return p?o(f,{className:t}):i?s(a,{direction:"row",align:"center",gap:"medium",className:t,children:[o("span",{style:{fontFamily:"monospace"},children:e?i:"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022"}),s(a,{direction:"row",align:"center",gap:"tight",children:[o(m,{type:"button",onClick:()=>l(!e),"aria-label":e?"Hide password":"Show password",children:e?o(n,{}):o(d,{})}),o(y,{text:i,tooltipText:r("copyToClipboard")||"Copy to clipboard",copiedTooltipText:r("copied")||"Copied!",ariaLabel:r("copyPassword")||"Copy password"})]})]}):o("div",{style:{color:"var(--muted-foreground)"},children:"-"})};var C=x;export{x as PasswordFieldDisplay,C as default};
@@ -0,0 +1,22 @@
1
+ import type { EntityField } from '@donotdev/core';
2
+ import type { ComponentType } from 'react';
3
+ export interface PhoneNumberDisplayProps {
4
+ /** Field configuration */
5
+ config: EntityField<'tel'>;
6
+ /** Value to display */
7
+ value: string;
8
+ /** Translation function */
9
+ t: (key: string, options?: Record<string, any>) => string;
10
+ /** Additional CSS classes */
11
+ className?: string;
12
+ }
13
+ /**
14
+ * PhoneNumberDisplay - Displays phone number values as clickable links
15
+ *
16
+ * @version 0.0.1
17
+ * @since 0.0.1
18
+ * @author AMBROISE PARK Consulting
19
+ */
20
+ export declare const PhoneNumberDisplay: ComponentType<PhoneNumberDisplayProps>;
21
+ export default PhoneNumberDisplay;
22
+ //# sourceMappingURL=PhoneNumberDisplay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PhoneNumberDisplay.d.ts","sourceRoot":"","sources":["../../../../src/components/fields/display/PhoneNumberDisplay.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,MAAM,WAAW,uBAAuB;IACtC,0BAA0B;IAC1B,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;IAC3B,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,MAAM,CAAC;IAC1D,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,aAAa,CAAC,uBAAuB,CA0BrE,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1 @@
1
+ import{jsx as n}from"react/jsx-runtime";import{Text as a}from"@donotdev/components";const i=({config:s,value:e,t:o,className:t})=>e?n("a",{href:`tel:${e}`,className:t||"",style:{color:"var(--primary)",textDecoration:"none"},onMouseEnter:r=>r.currentTarget.style.textDecoration="underline",onMouseLeave:r=>r.currentTarget.style.textDecoration="none","aria-label":o("common.callNumber",{number:e}),children:e}):n(a,{as:"span",variant:"muted",className:t,children:"-"});var m=i;export{i as PhoneNumberDisplay,m as default};
@@ -0,0 +1,22 @@
1
+ import type { EntityField } from '@donotdev/core';
2
+ import type { ComponentType } from 'react';
3
+ export interface RadioFieldDisplayProps {
4
+ /** Field configuration */
5
+ config: EntityField<'radio'>;
6
+ /** Value to display */
7
+ value: string;
8
+ /** Translation function */
9
+ t: (key: string, options?: Record<string, any>) => string;
10
+ /** Additional CSS classes */
11
+ className?: string;
12
+ }
13
+ /**
14
+ * RadioFieldDisplay - Displays radio values as badges
15
+ *
16
+ * @version 0.0.1
17
+ * @since 0.0.1
18
+ * @author AMBROISE PARK Consulting
19
+ */
20
+ export declare const RadioFieldDisplay: ComponentType<RadioFieldDisplayProps>;
21
+ export default RadioFieldDisplay;
22
+ //# sourceMappingURL=RadioFieldDisplay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RadioFieldDisplay.d.ts","sourceRoot":"","sources":["../../../../src/components/fields/display/RadioFieldDisplay.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,MAAM,WAAW,sBAAsB;IACrC,0BAA0B;IAC1B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC7B,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,MAAM,CAAC;IAC1D,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC,sBAAsB,CAmBnE,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1 @@
1
+ import{jsx as a}from"react/jsx-runtime";import{Badge as e,BADGE_VARIANT as i,Text as n}from"@donotdev/components";const o=({config:s,value:r,t:d,className:t})=>r?a(e,{variant:i.OUTLINE,className:t,children:r}):a(n,{as:"span",variant:"muted",className:t,children:"-"});var c=o;export{o as RadioFieldDisplay,c as default};
@@ -0,0 +1,22 @@
1
+ import type { EntityField } from '@donotdev/core';
2
+ import type { ComponentType } from 'react';
3
+ export interface RangeFieldDisplayProps {
4
+ /** Field configuration */
5
+ config: EntityField<'range'>;
6
+ /** Value to display */
7
+ value: number;
8
+ /** Translation function */
9
+ t: (key: string, options?: Record<string, any>) => string;
10
+ /** Additional CSS classes */
11
+ className?: string;
12
+ }
13
+ /**
14
+ * RangeFieldDisplay - Displays range values in read-only mode
15
+ *
16
+ * @version 0.0.1
17
+ * @since 0.0.1
18
+ * @author AMBROISE PARK Consulting
19
+ */
20
+ export declare const RangeFieldDisplay: ComponentType<RangeFieldDisplayProps>;
21
+ export default RangeFieldDisplay;
22
+ //# sourceMappingURL=RangeFieldDisplay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RangeFieldDisplay.d.ts","sourceRoot":"","sources":["../../../../src/components/fields/display/RangeFieldDisplay.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,MAAM,WAAW,sBAAsB;IACrC,0BAA0B;IAC1B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC7B,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,MAAM,CAAC;IAC1D,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC,sBAAsB,CAmBnE,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1 @@
1
+ import{jsx as t}from"react/jsx-runtime";import{Text as e}from"@donotdev/components";const o=({config:s,value:n,t:a,className:r})=>n==null?t(e,{as:"span",variant:"muted",className:r,children:"-"}):t(e,{as:"span",className:`font-mono ${r||""}`,children:n});var f=o;export{o as RangeFieldDisplay,f as default};
@@ -0,0 +1,22 @@
1
+ import type { EntityField } from '@donotdev/core';
2
+ import type { ComponentType } from 'react';
3
+ export interface ReferenceFieldDisplayProps {
4
+ /** Field configuration */
5
+ config: EntityField<'reference'>;
6
+ /** Value to display */
7
+ value: any;
8
+ /** Translation function */
9
+ t: (key: string, options?: Record<string, any>) => string;
10
+ /** Additional CSS classes */
11
+ className?: string;
12
+ }
13
+ /**
14
+ * ReferenceFieldDisplay - Displays reference values as badges
15
+ *
16
+ * @version 0.0.1
17
+ * @since 0.0.1
18
+ * @author AMBROISE PARK Consulting
19
+ */
20
+ export declare const ReferenceFieldDisplay: ComponentType<ReferenceFieldDisplayProps>;
21
+ export default ReferenceFieldDisplay;
22
+ //# sourceMappingURL=ReferenceFieldDisplay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReferenceFieldDisplay.d.ts","sourceRoot":"","sources":["../../../../src/components/fields/display/ReferenceFieldDisplay.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,MAAM,WAAW,0BAA0B;IACzC,0BAA0B;IAC1B,MAAM,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IACjC,uBAAuB;IACvB,KAAK,EAAE,GAAG,CAAC;IACX,2BAA2B;IAC3B,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,MAAM,CAAC;IAC1D,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAC/C,0BAA0B,CAiB3B,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
@@ -0,0 +1 @@
1
+ import{jsx as t}from"react/jsx-runtime";import{Badge as a,BADGE_VARIANT as n,Text as s}from"@donotdev/components";const d=({config:o,value:r,t:m,className:e})=>{if(!r)return t(s,{as:"span",variant:"muted",className:e,children:"-"});const i=r.displayName||r.name||r.id||r;return t(a,{variant:n.OUTLINE,className:e,children:String(i)})};var f=d;export{d as ReferenceFieldDisplay,f as default};
@@ -0,0 +1,25 @@
1
+ import type { EntityField } from '@donotdev/core';
2
+ import type { ComponentType } from 'react';
3
+ export interface RichTextDisplayProps {
4
+ /** Field configuration */
5
+ config: EntityField<'richtext'>;
6
+ /** HTML value to display */
7
+ value: string;
8
+ /** Translation function */
9
+ t: (key: string, options?: Record<string, any>) => string;
10
+ /** Additional CSS classes */
11
+ className?: string;
12
+ }
13
+ /**
14
+ * RichTextDisplay - Displays rich text/HTML content in read-only mode
15
+ *
16
+ * Renders HTML with styling that matches Tiptap editor output.
17
+ * Safe to use with HTML from Tiptap (sanitized by Tiptap).
18
+ *
19
+ * @version 0.0.1
20
+ * @since 0.0.1
21
+ * @author AMBROISE PARK Consulting
22
+ */
23
+ export declare const RichTextDisplay: ComponentType<RichTextDisplayProps>;
24
+ export default RichTextDisplay;
25
+ //# sourceMappingURL=RichTextDisplay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RichTextDisplay.d.ts","sourceRoot":"","sources":["../../../../src/components/fields/display/RichTextDisplay.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,MAAM,WAAW,oBAAoB;IACnC,0BAA0B;IAC1B,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IAChC,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,MAAM,CAAC;IAC1D,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC,oBAAoB,CAmG/D,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -0,0 +1,61 @@
1
+ import{jsx as e,jsxs as i}from"react/jsx-runtime";import{Text as t}from"@donotdev/components";const s=({config:a,value:r,t:n,className:o})=>!r||r.trim()===""?e(t,{as:"span",variant:"muted",className:o,children:"-"}):i("div",{className:o,style:{padding:"var(--gap-md)",backgroundColor:"var(--muted)",borderRadius:"var(--radius-md)",border:"1px solid var(--border)",minHeight:"38px"},children:[e("div",{dangerouslySetInnerHTML:{__html:r},style:{outline:"none",fontSize:"var(--font-size-base)",lineHeight:"1.6"},className:"prose prose-sm max-w-none"}),e("style",{children:`
2
+ /* Match Tiptap ProseMirror styling */
3
+ .prose p {
4
+ margin: 0.5em 0;
5
+ }
6
+ .prose p:first-child {
7
+ margin-top: 0;
8
+ }
9
+ .prose p:last-child {
10
+ margin-bottom: 0;
11
+ }
12
+ .prose h1 {
13
+ font-size: var(--font-size-2xl);
14
+ font-weight: 600;
15
+ margin: 0.5em 0;
16
+ }
17
+ .prose h2 {
18
+ font-size: var(--font-size-xl);
19
+ font-weight: 600;
20
+ margin: 0.5em 0;
21
+ }
22
+ .prose h3 {
23
+ font-size: var(--font-size-lg);
24
+ font-weight: 600;
25
+ margin: 0.5em 0;
26
+ }
27
+ .prose ul, .prose ol {
28
+ padding-left: 1.5em;
29
+ margin: 0.5em 0;
30
+ }
31
+ .prose li {
32
+ margin: 0.25em 0;
33
+ }
34
+ .prose strong {
35
+ font-weight: 600;
36
+ }
37
+ .prose em {
38
+ font-style: italic;
39
+ }
40
+ .prose code {
41
+ background: var(--muted);
42
+ padding: 0.2em 0.4em;
43
+ border-radius: var(--radius-sm);
44
+ font-family: monospace;
45
+ font-size: 0.9em;
46
+ }
47
+ .prose blockquote {
48
+ border-left: 3px solid var(--border);
49
+ padding-left: 1em;
50
+ margin: 0.5em 0;
51
+ color: var(--muted-foreground);
52
+ font-style: italic;
53
+ }
54
+ .prose a {
55
+ color: var(--primary);
56
+ text-decoration: underline;
57
+ }
58
+ .prose a:hover {
59
+ color: var(--primary-hover);
60
+ }
61
+ `})]});var p=s;export{s as RichTextDisplay,p as default};
@@ -0,0 +1,22 @@
1
+ import type { EntityField } from '@donotdev/core';
2
+ import type { ComponentType } from 'react';
3
+ export interface TextAreaDisplayProps {
4
+ /** Field configuration */
5
+ config: EntityField<'textarea'>;
6
+ /** Value to display */
7
+ value: string;
8
+ /** Translation function */
9
+ t: (key: string, options?: Record<string, any>) => string;
10
+ /** Additional CSS classes */
11
+ className?: string;
12
+ }
13
+ /**
14
+ * TextAreaDisplay - Displays textarea values in read-only mode
15
+ *
16
+ * @version 0.0.1
17
+ * @since 0.0.1
18
+ * @author AMBROISE PARK Consulting
19
+ */
20
+ export declare const TextAreaDisplay: ComponentType<TextAreaDisplayProps>;
21
+ export default TextAreaDisplay;
22
+ //# sourceMappingURL=TextAreaDisplay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextAreaDisplay.d.ts","sourceRoot":"","sources":["../../../../src/components/fields/display/TextAreaDisplay.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,MAAM,WAAW,oBAAoB;IACnC,0BAA0B;IAC1B,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IAChC,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,MAAM,CAAC;IAC1D,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC,oBAAoB,CAuB/D,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -0,0 +1 @@
1
+ import{jsx as t}from"react/jsx-runtime";import{Text as a}from"@donotdev/components";const s=({config:i,value:e,t:p,className:r})=>e?t(a,{as:"div",level:"small",className:`whitespace-pre-wrap ${r||""}`,children:e}):t(a,{as:"span",variant:"muted",className:r,children:"-"});var o=s;export{s as TextAreaDisplay,o as default};
@@ -0,0 +1,42 @@
1
+ import type { EntityField } from '@donotdev/core';
2
+ import type { ComponentType } from 'react';
3
+ export interface TextFieldDisplayProps {
4
+ /** Field configuration */
5
+ config: EntityField<'text' | 'email' | 'month' | 'week' | 'time'>;
6
+ /** Value to display */
7
+ value: string;
8
+ /** Translation function */
9
+ t: (key: string, options?: Record<string, any>) => string;
10
+ /** Additional CSS classes */
11
+ className?: string;
12
+ /** Whether the field is loading */
13
+ loading?: boolean;
14
+ /** Show copy button */
15
+ showCopy?: boolean;
16
+ /** Show as badge */
17
+ asBadge?: boolean;
18
+ /** Truncate long text */
19
+ truncate?: boolean;
20
+ /** Maximum length before truncation */
21
+ maxLength?: number;
22
+ /** Show field label */
23
+ showLabel?: boolean;
24
+ }
25
+ /**
26
+ * Enhanced TextFieldDisplay with modern UX features
27
+ *
28
+ * Features:
29
+ * - Smart formatting based on field type
30
+ * - Copy to clipboard functionality
31
+ * - Truncation with tooltips
32
+ * - Badge display option
33
+ * - Loading states
34
+ * - Responsive design
35
+ *
36
+ * @version 0.0.1
37
+ * @since 0.0.1
38
+ * @author AMBROISE PARK Consulting
39
+ */
40
+ export declare const TextFieldDisplay: ComponentType<TextFieldDisplayProps>;
41
+ export default TextFieldDisplay;
42
+ //# sourceMappingURL=TextFieldDisplay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextFieldDisplay.d.ts","sourceRoot":"","sources":["../../../../src/components/fields/display/TextFieldDisplay.tsx"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGlD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,MAAM,WAAW,qBAAqB;IACpC,0BAA0B;IAC1B,MAAM,EAAE,WAAW,CAAC,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;IAClE,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,MAAM,CAAC;IAC1D,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uBAAuB;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oBAAoB;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uBAAuB;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,qBAAqB,CA8JjE,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1 @@
1
+ import{jsx as e,jsxs as i}from"react/jsx-runtime";import{Mail as V,Calendar as k,Clock as N}from"lucide-react";import{useState as j}from"react";import{Skeleton as f,Badge as A,BADGE_VARIANT as F,Text as l,cn as T,CopyToClipboard as x,Stack as n}from"@donotdev/components";import{getWeekFromISOString as I}from"@donotdev/core";const B=({config:a,value:r,t:o,className:c,loading:C=!1,showCopy:m=!1,asBadge:b=!1,truncate:s=!1,maxLength:d=50,showLabel:p=!1})=>{const[E,h]=j(!1),M=async()=>{try{await navigator.clipboard.writeText(r),h(!0),setTimeout(()=>h(!1),2e3)}catch{}},y=()=>{switch(a.type){case"email":return e(V,{});case"month":case"week":return e(k,{});case"time":return e(N,{});default:return null}},S=t=>{if(!t)return null;switch(a.type){case"email":return i("a",{href:`mailto:${t}`,style:{display:"flex",alignItems:"center",gap:"var(--gap-sm)"},onMouseEnter:u=>u.currentTarget.style.textDecoration="underline",onMouseLeave:u=>u.currentTarget.style.textDecoration="none",children:[y(),t]});case"month":return new Date(t).toLocaleDateString("en-US",{year:"numeric",month:"long"});case"week":return I(t);case"time":return new Date(`2000-01-01T${t}`).toLocaleTimeString();default:return t}},w=t=>!s||t.length<=d?t:`${t.substring(0,d)}...`;if(C)return i(n,{gap:"tight",children:[p&&e(f,{style:{height:"1rem",width:"6rem"}}),e(f,{className:"dndev-w-full",style:{height:"1.5rem"}})]});if(!r)return i(n,{gap:"tight",children:[p&&e(l,{as:"span",variant:"muted",children:a.label||a.name}),e(l,{as:"span",variant:"muted",className:T(c),style:{fontStyle:"italic"},children:o("common.noValue",{defaultValue:"No value"})})]});const D=S(r),g=w(String(D));return b?i(n,{direction:"row",align:"center",gap:"tight",children:[y(),e(A,{variant:F.SECONDARY,className:c,children:g}),m&&e(x,{text:r,tooltipText:o("copyToClipboard")||"Copy to clipboard",copiedTooltipText:o("copied")||"Copied!",ariaLabel:o("copyToClipboard")||"Copy to clipboard"})]}):i(n,{gap:"tight",children:[p&&e(l,{as:"span",variant:"muted",children:a.label||a.name}),i(n,{direction:"row",align:"center",gap:"tight",children:[e("div",{className:T("dndev-flex-1",s&&"truncate",c),title:s&&r.length>d?r:void 0,children:e(l,{as:"span",children:g})}),m&&e(x,{text:r,tooltipText:o("copyToClipboard")||"Copy to clipboard",copiedTooltipText:o("copied")||"Copied!",ariaLabel:o("copyToClipboard")||"Copy to clipboard"})]})]})};var W=B;export{B as TextFieldDisplay,W as default};
@@ -0,0 +1,22 @@
1
+ import type { EntityField } from '@donotdev/core';
2
+ import type { ComponentType } from 'react';
3
+ export interface TimestampFieldDisplayProps {
4
+ /** Field configuration */
5
+ config: EntityField<'timestamp'>;
6
+ /** Value to display */
7
+ value: string | number;
8
+ /** Translation function */
9
+ t: (key: string, options?: Record<string, any>) => string;
10
+ /** Additional CSS classes */
11
+ className?: string;
12
+ }
13
+ /**
14
+ * TimestampFieldDisplay - Displays timestamp values in read-only mode
15
+ *
16
+ * @version 0.0.1
17
+ * @since 0.0.1
18
+ * @author AMBROISE PARK Consulting
19
+ */
20
+ export declare const TimestampFieldDisplay: ComponentType<TimestampFieldDisplayProps>;
21
+ export default TimestampFieldDisplay;
22
+ //# sourceMappingURL=TimestampFieldDisplay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimestampFieldDisplay.d.ts","sourceRoot":"","sources":["../../../../src/components/fields/display/TimestampFieldDisplay.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,MAAM,WAAW,0BAA0B;IACzC,0BAA0B;IAC1B,MAAM,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IACjC,uBAAuB;IACvB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,2BAA2B;IAC3B,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,MAAM,CAAC;IAC1D,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAC/C,0BAA0B,CA8B3B,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
@@ -0,0 +1 @@
1
+ import{jsx as t,jsxs as o}from"react/jsx-runtime";import{Text as e}from"@donotdev/components";const c=({config:m,value:s,t:d,className:a})=>{if(!s)return t(e,{as:"span",variant:"muted",className:a,children:"-"});try{const r=new Date(s),n=r.toLocaleDateString(),i=r.toLocaleTimeString();return o("div",{className:a,children:[t(e,{as:"span",children:n}),t(e,{as:"span",variant:"muted",level:"small",children:i})]})}catch{return t(e,{as:"span",variant:"muted",className:a,children:"-"})}};var f=c;export{c as TimestampFieldDisplay,f as default};
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @fileoverview Display field components
3
+ * @description Read-only display components for CRUD operations
4
+ *
5
+ * @version 0.0.1
6
+ * @since 0.0.1
7
+ * @author AMBROISE PARK Consulting
8
+ */
9
+ export { default as TextFieldDisplay } from './TextFieldDisplay';
10
+ export { default as BadgeFieldDisplay } from './BadgeFieldDisplay';
11
+ export { default as AvatarFieldDisplay } from './AvatarFieldDisplay';
12
+ export { default as LinkFieldDisplay } from './LinkFieldDisplay';
13
+ export { default as DateFieldDisplay } from './DateFieldDisplay';
14
+ export { default as NumberFieldDisplay } from './NumberFieldDisplay';
15
+ export { default as PhoneNumberDisplay } from './PhoneNumberDisplay';
16
+ export { default as TextAreaDisplay } from './TextAreaDisplay';
17
+ export { default as RichTextDisplay } from './RichTextDisplay';
18
+ export { default as CheckboxFieldDisplay } from './CheckboxFieldDisplay';
19
+ export { default as DropdownDisplay } from './DropdownDisplay';
20
+ export { default as MultiDropdownDisplay } from './MultiDropdownDisplay';
21
+ export { default as MultiInputTextFieldDisplay } from './MultiInputTextFieldDisplay';
22
+ export { default as RadioFieldDisplay } from './RadioFieldDisplay';
23
+ export { default as RangeFieldDisplay } from './RangeFieldDisplay';
24
+ export { default as FileFieldDisplay } from './FileFieldDisplay';
25
+ export { default as ImageFieldDisplay } from './ImageFieldDisplay';
26
+ export { default as GeoPointFieldDisplay } from './GeoPointFieldDisplay';
27
+ export { default as MapFieldDisplay } from './MapFieldDisplay';
28
+ export { default as ReferenceFieldDisplay } from './ReferenceFieldDisplay';
29
+ export { default as TimestampFieldDisplay } from './TimestampFieldDisplay';
30
+ export { default as HiddenFieldDisplay } from './HiddenFieldDisplay';
31
+ export { default as ButtonFieldDisplay } from './ButtonFieldDisplay';
32
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/fields/display/index.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1 @@
1
+ import{default as l}from"./TextFieldDisplay";import{default as o}from"./BadgeFieldDisplay";import{default as p}from"./AvatarFieldDisplay";import{default as d}from"./LinkFieldDisplay";import{default as s}from"./DateFieldDisplay";import{default as m}from"./NumberFieldDisplay";import{default as D}from"./PhoneNumberDisplay";import{default as F}from"./TextAreaDisplay";import{default as T}from"./RichTextDisplay";import{default as b}from"./CheckboxFieldDisplay";import{default as g}from"./DropdownDisplay";import{default as M}from"./MultiDropdownDisplay";import{default as w}from"./MultiInputTextFieldDisplay";import{default as B}from"./RadioFieldDisplay";import{default as N}from"./RangeFieldDisplay";import{default as v}from"./FileFieldDisplay";import{default as G}from"./ImageFieldDisplay";import{default as L}from"./GeoPointFieldDisplay";import{default as q}from"./MapFieldDisplay";import{default as E}from"./ReferenceFieldDisplay";import{default as K}from"./TimestampFieldDisplay";import{default as Q}from"./HiddenFieldDisplay";import{default as U}from"./ButtonFieldDisplay";export{p as AvatarFieldDisplay,o as BadgeFieldDisplay,U as ButtonFieldDisplay,b as CheckboxFieldDisplay,s as DateFieldDisplay,g as DropdownDisplay,v as FileFieldDisplay,L as GeoPointFieldDisplay,Q as HiddenFieldDisplay,G as ImageFieldDisplay,d as LinkFieldDisplay,q as MapFieldDisplay,M as MultiDropdownDisplay,w as MultiInputTextFieldDisplay,m as NumberFieldDisplay,D as PhoneNumberDisplay,B as RadioFieldDisplay,N as RangeFieldDisplay,E as ReferenceFieldDisplay,T as RichTextDisplay,F as TextAreaDisplay,l as TextFieldDisplay,K as TimestampFieldDisplay};
@@ -21,6 +21,12 @@ export interface ComboboxComponentProps {
21
21
  required?: boolean;
22
22
  /** Placeholder text */
23
23
  placeholder?: string;
24
+ /** Translation namespace for placeholder fallback (default: 'dndev') */
25
+ translationNamespace?: string;
26
+ /** Translation key for placeholder fallback (default: 'actions.select') */
27
+ placeholderKey?: string;
28
+ /** Default placeholder text if translation not found (default: 'Select') */
29
+ placeholderDefault?: string;
24
30
  /** Enable creating new values */
25
31
  creatable?: boolean;
26
32
  /** Label for create option */
@@ -1 +1 @@
1
- {"version":3,"file":"ComboboxComponent.d.ts","sourceRoot":"","sources":["../../../../src/components/form/fields/ComboboxComponent.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAExD,MAAM,WAAW,sBAAsB;IACrC,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wBAAwB;IACxB,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC5C,kBAAkB;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kBAAkB;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IACpE,mBAAmB;IACnB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iCAAiC;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,8BAA8B;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;GASG;AACH,QAAA,MAAM,iBAAiB,EAAE,aAAa,CAAC,sBAAsB,CA6F5D,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"ComboboxComponent.d.ts","sourceRoot":"","sources":["../../../../src/components/form/fields/ComboboxComponent.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAExD,MAAM,WAAW,sBAAsB;IACrC,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wBAAwB;IACxB,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC5C,kBAAkB;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kBAAkB;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IACpE,mBAAmB;IACnB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,2EAA2E;IAC3E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4EAA4E;IAC5E,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iCAAiC;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,8BAA8B;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;GASG;AACH,QAAA,MAAM,iBAAiB,EAAE,aAAa,CAAC,sBAAsB,CAgG5D,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -1 +1 @@
1
- import{jsx as a,jsxs as c}from"react/jsx-runtime";import{useMemo as A,useId as I}from"react";import{Combobox as O,Stack as d}from"@donotdev/components";import{useTranslation as E}from"@donotdev/core";const M=({label:u,value:n,options:s,error:f,helperText:o,onChange:l,onBlur:m,required:p,placeholder:g,creatable:h=!1,createLabel:b,emptyMessage:v})=>{const{t:r}=E("dndev"),i=I(),x=A(()=>s.map(e=>({value:String(e.value),label:e.label})),[s]),C=e=>{if(l){const z={target:{value:Array.isArray(e)?e[0]||"":e}};l(z)}},y=e=>{e||m?.()},t=!!f,S=`${i}-error`,j=`${i}-helper`;return c(d,{gap:"tight",children:[a(O,{label:u,value:n||"",onValueChange:C,onOpenChange:y,placeholder:g||r("actions.select","Select"),emptyMessage:v||r("messages.noResults","No results found"),creatable:h,createLabel:b||r("actions.create","Create"),options:x,required:p,variant:t?"destructive":void 0,clearable:!!n}),t&&c(d,{id:S,direction:"row",align:"center",gap:"tight",style:{fontSize:"var(--font-size-xs)",color:"var(--destructive-foreground)"},role:"alert",children:[a("span",{children:"\u26A0"}),o]}),o&&!t&&a("p",{id:j,style:{fontSize:"var(--font-size-xs)",color:"var(--muted-foreground)"},children:o})]})};var N=M;export{N as default};
1
+ import{jsx as a,jsxs as c}from"react/jsx-runtime";import{useMemo as E,useId as M}from"react";import{Combobox as V,Stack as d}from"@donotdev/components";import{useTranslation as _}from"@donotdev/core";const $=({label:u,value:n,options:s,error:f,helperText:o,onChange:l,onBlur:m,required:p,placeholder:g,translationNamespace:h="dndev",placeholderKey:b="actions.select",placeholderDefault:v="Select",creatable:x=!1,createLabel:C,emptyMessage:y})=>{const{t:r}=_(h),i=M(),S=E(()=>s.map(e=>({value:String(e.value),label:e.label})),[s]),j=e=>{if(l){const O={target:{value:Array.isArray(e)?e[0]||"":e}};l(O)}},z=e=>{e||m?.()},t=!!f,A=`${i}-error`,I=`${i}-helper`;return c(d,{gap:"tight",children:[a(V,{label:u,value:n||"",onValueChange:j,onOpenChange:z,placeholder:g||r(b,v),emptyMessage:y||r("messages.noResults","No results found"),creatable:x,createLabel:C||r("actions.create","Create"),options:S,required:p,variant:t?"destructive":void 0,clearable:!!n}),t&&c(d,{id:A,direction:"row",align:"center",gap:"tight",style:{fontSize:"var(--font-size-xs)",color:"var(--destructive-foreground)"},role:"alert",children:[a("span",{children:"\u26A0"}),o]}),o&&!t&&a("p",{id:I,style:{fontSize:"var(--font-size-xs)",color:"var(--muted-foreground)"},children:o})]})};var D=$;export{D as default};
@@ -0,0 +1,42 @@
1
+ import type { ComponentType } from 'react';
2
+ /** Preset durations in minutes */
3
+ export declare const DURATION_PRESETS: readonly [15, 30, 45, 60, 90, 120, 150, 180];
4
+ export interface DurationFieldComponentProps {
5
+ /** Label for the field */
6
+ label: string;
7
+ /** Current value in minutes */
8
+ value?: number;
9
+ /** Change handler (minutes) */
10
+ onChange: (value: number) => void;
11
+ /** Whether the field is in error state */
12
+ error?: boolean;
13
+ /** Helper text */
14
+ helperText?: string;
15
+ /** Whether the field is disabled */
16
+ disabled?: boolean;
17
+ /** Whether the field is required */
18
+ required?: boolean;
19
+ /** Read-only mode (display only) */
20
+ readonly?: boolean;
21
+ /** Min minutes for custom slider (default 0) */
22
+ min?: number;
23
+ /** Max minutes for custom slider (default 480 = 8h) */
24
+ max?: number;
25
+ /** Step for custom slider (default 5) */
26
+ step?: number;
27
+ /**
28
+ * Translation function for preset labels (e.g. t('crud:duration.30m')).
29
+ * Receives i18n key; return value is the chip label.
30
+ */
31
+ t?: (key: string, options?: Record<string, unknown>) => string;
32
+ }
33
+ /**
34
+ * DurationFieldComponent - Preset chips + Custom slider for duration (minutes)
35
+ *
36
+ * Used by the built-in entity field type `duration`.
37
+ *
38
+ * @see Entity field type: `duration` (registered in registerBuiltinFieldTypes)
39
+ */
40
+ declare const DurationFieldComponent: ComponentType<DurationFieldComponentProps>;
41
+ export default DurationFieldComponent;
42
+ //# sourceMappingURL=DurationFieldComponent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DurationFieldComponent.d.ts","sourceRoot":"","sources":["../../../../src/components/form/fields/DurationFieldComponent.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,kCAAkC;AAClC,eAAO,MAAM,gBAAgB,8CAA+C,CAAC;AAE7E,MAAM,WAAW,2BAA2B;IAC1C,0BAA0B;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,0CAA0C;IAC1C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kBAAkB;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gDAAgD;IAChD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;CAChE;AAoBD;;;;;;GAMG;AACH,QAAA,MAAM,sBAAsB,EAAE,aAAa,CAAC,2BAA2B,CA0HtE,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
@@ -0,0 +1 @@
1
+ import{jsx as a,jsxs as u}from"react/jsx-runtime";import{useState as w,useMemo as C}from"react";import{Clock as S}from"lucide-react";import{Label as $,Stack as l,Button as b,Slider as E}from"@donotdev/components";const x=[15,30,45,60,90,120,150,180],N={15:"duration.15m",30:"duration.30m",45:"duration.45m",60:"duration.1h",90:"duration.1h30",120:"duration.2h",150:"duration.2h30",180:"duration.3h"};function _(e,n){const i=e<60?`${e}m`:e%60===0?`${e/60}h`:`${Math.floor(e/60)}h${e%60}`,s=N[e];return!n||!s?i:n(`crud:${s}`,{defaultValue:i})??i}const j=({label:e,value:n,onChange:i,error:s,helperText:d,disabled:c,required:h,readonly:M,min:p=0,max:g=480,step:V=5,t:o})=>{const r=typeof n=="number"&&!Number.isNaN(n)?n:0,m=x.includes(r),[f,v]=w(!m&&r>0),k=C(()=>x.map(t=>({minutes:t,label:_(t,o)})),[o]),y=o?o("crud:duration.custom",{defaultValue:"Custom"}):"Custom";if(M){const t=r===0?o?o("crud:duration.zero",{defaultValue:"\u2014"}):"\u2014":r<60?o?o("crud:duration.minutes",{count:r,defaultValue:`${r} min`}):`${r} min`:o?o("crud:duration.hoursMinutes",{hours:Math.floor(r/60),minutes:r%60,defaultValue:`${Math.floor(r/60)}h${r%60?` ${r%60}min`:""}`}):`${Math.floor(r/60)}h${r%60?` ${r%60}m`:""}`;return u(l,{gap:"tight",children:[a($,{required:h,style:{fontSize:"var(--font-size-sm)",fontWeight:500},children:e}),u(l,{direction:"row",gap:"tight",align:"center",children:[a(S,{size:18,style:{color:"var(--muted-foreground)"},"aria-hidden":!0}),a("span",{style:{color:"var(--muted-foreground)",fontSize:"var(--font-size-sm)"},children:t})]}),d&&a("p",{style:{fontSize:"var(--font-size-xs)",color:s?"var(--destructive-foreground)":"var(--muted-foreground)",marginTop:"var(--gap-sm)"},children:d})]})}return u(l,{gap:"medium",children:[a($,{required:h,style:{fontSize:"var(--font-size-sm)",fontWeight:500},children:e}),u(l,{direction:"row",gap:"tight",align:"center",style:{flexWrap:"wrap"},children:[k.map(({minutes:t,label:z})=>u(b,{type:"button",variant:r===t?"primary":"outline",disabled:c,onClick:()=>{v(!1),i(t)},"aria-pressed":r===t,"aria-label":z,children:[a(S,{size:14,style:{marginRight:"var(--gap-xs)"},"aria-hidden":!0}),z]},t)),a(b,{type:"button",variant:f?"primary":"outline",disabled:c,onClick:()=>{v(!0),!m&&r>0?i(r):i(30)},"aria-pressed":f,"aria-label":y,children:y})]}),f&&a(l,{gap:"tight",style:{marginTop:"var(--gap-sm)"},children:a(E,{value:[m?30:r],onValueChange:([t])=>i(Math.max(p,Math.min(g,t??0))),min:p,max:g,step:V,showValue:!0,disabled:c,"aria-label":e})}),d&&a("p",{style:{fontSize:"var(--font-size-xs)",color:s?"var(--destructive-foreground)":"var(--muted-foreground)",marginTop:"var(--gap-sm)"},children:d})]})};var W=j;export{x as DURATION_PRESETS,W as default};
@@ -13,9 +13,9 @@ export interface GdprConsentFieldComponentProps {
13
13
  }
14
14
  /**
15
15
  * GDPR Consent Field Component - Renders a consent checkbox with automatic label generation.
16
- * Automatically generates label with links to privacy policy and terms using native <a> tags.
16
+ * Opens privacy policy and terms in Sheet with iframe when links are clicked.
17
17
  *
18
- * @version 0.0.1
18
+ * @version 0.0.2
19
19
  * @since 0.0.1
20
20
  * @author AMBROISE PARK Consulting
21
21
  * @param props - GdprConsentFieldComponentProps
@@ -1 +1 @@
1
- {"version":3,"file":"GdprConsentFieldComponent.d.ts","sourceRoot":"","sources":["../../../../src/components/form/fields/GdprConsentFieldComponent.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAExD,MAAM,WAAW,8BAA8B;IAC7C,sCAAsC;IACtC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IAC1D,oCAAoC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8DAA8D;IAC9D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,QAAA,MAAM,yBAAyB,EAAE,aAAa,CAAC,8BAA8B,CA2E5E,CAAC;AAEF,eAAe,yBAAyB,CAAC"}
1
+ {"version":3,"file":"GdprConsentFieldComponent.d.ts","sourceRoot":"","sources":["../../../../src/components/form/fields/GdprConsentFieldComponent.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAc,MAAM,OAAO,CAAC;AAEpE,MAAM,WAAW,8BAA8B;IAC7C,sCAAsC;IACtC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IAC1D,oCAAoC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8DAA8D;IAC9D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,QAAA,MAAM,yBAAyB,EAAE,aAAa,CAC5C,8BAA8B,CA4I/B,CAAC;AAEF,eAAe,yBAAyB,CAAC"}
@@ -1 +1 @@
1
- import{jsx as t,jsxs as s}from"react/jsx-runtime";import{useId as m}from"react";import{Checkbox as h,Label as x,Text as y}from"@donotdev/components";import{useTranslation as C}from"@donotdev/core";const k=({checked:n=!1,onChange:o,required:i,privacyPolicyPath:c="/legal/privacy",termsPath:p="/legal/terms"})=>{const a=m(),{t:r}=C("crud"),l=e=>{o&&o({target:{checked:e}})},d=r("gdprConsent.consent",{defaultValue:"I agree to the"}),u=r("gdprConsent.privacyPolicy",{defaultValue:"privacy policy"}),f=r("gdprConsent.terms",{defaultValue:"terms of use"}),g=r("gdprConsent.and",{defaultValue:"and consent to the processing of my personal data."});return s("label",{htmlFor:a,style:{display:"flex",flexDirection:"row",alignItems:"center",gap:"var(--gap-tight)",cursor:"pointer",userSelect:"none"},onClick:e=>{e.target.tagName!=="A"&&(e.target.closest('[data-type="checkbox"]')||l(!n))},children:[t(h,{id:a,checked:n,onCheckedChange:l}),t(x,{required:i,plain:!0,children:s(y,{level:"small",children:[d," ",t("a",{href:c,style:{color:"var(--primary)",textDecoration:"underline"},target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),children:u})," / ",t("a",{href:p,style:{color:"var(--primary)",textDecoration:"underline"},target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),children:f})," ",g]})})]})};var V=k;export{V as default};
1
+ import{jsx as t,jsxs as o,Fragment as w}from"react/jsx-runtime";import{useState as m}from"react";import{Checkbox as T,Label as O,Sheet as g,Stack as D,Text as j}from"@donotdev/components";import{useTranslation as H}from"@donotdev/core";const V=({checked:l=!1,onChange:s,required:u,privacyPolicyPath:a="/legal/privacy",termsPath:c="/legal/terms"})=>{const{t:n}=H("crud"),[x,d]=m(!1),[y,h]=m(!1),p=e=>{s&&s({target:{checked:e}})},C=e=>{e.target.tagName!=="A"&&(e.target.closest('[data-type="checkbox"]')||p(!l))},f=(e,b)=>{e.preventDefault(),b==="privacy"?d(!0):h(!0)},v=n("gdprConsent.consent",{defaultValue:"I agree to the"}),r=n("gdprConsent.privacyPolicy",{defaultValue:"privacy policy"}),i=n("gdprConsent.terms",{defaultValue:"terms of use"}),k=n("gdprConsent.and",{defaultValue:"and consent to the processing of my personal data."});return o(w,{children:[o(D,{direction:"row",align:"center",gap:"tight",children:[t(T,{checked:l,onCheckedChange:p}),t(O,{required:u,plain:!0,onClick:C,style:{cursor:"pointer"},children:o(j,{level:"small",children:[v," ",t("a",{href:a,onClick:e=>f(e,"privacy"),style:{textDecoration:"underline",cursor:"pointer"},children:r})," / ",t("a",{href:c,onClick:e=>f(e,"terms"),style:{textDecoration:"underline",cursor:"pointer"},children:i})," ",k]})})]}),t(g,{open:x,onOpenChange:d,side:"bottom",title:r,style:{width:"100%",height:"90%",maxHeight:"90dvh",display:"flex",flexDirection:"column",overflow:"hidden"},children:t("iframe",{src:a,style:{width:"100%",height:"100%",border:"none",flex:1,minHeight:0},title:r})}),t(g,{open:y,onOpenChange:h,side:"bottom",title:i,style:{width:"100%",height:"90%",maxHeight:"90dvh",display:"flex",flexDirection:"column",overflow:"hidden"},children:t("iframe",{src:c,style:{width:"100%",height:"100%",border:"none",flex:1,minHeight:0},title:i})})]})};var q=V;export{q as default};
@@ -0,0 +1,34 @@
1
+ import type { ComponentType } from 'react';
2
+ export interface PriceValue {
3
+ amount: number;
4
+ currency?: string;
5
+ vatIncluded?: boolean;
6
+ discountPercent?: number;
7
+ }
8
+ export interface PriceFieldComponentProps {
9
+ /** Field label (for amount) */
10
+ label: string;
11
+ /** Current value */
12
+ value?: PriceValue | null;
13
+ /** Change handler */
14
+ onChange: (value: PriceValue) => void;
15
+ /** Error state */
16
+ error?: boolean;
17
+ /** Helper text */
18
+ helperText?: string;
19
+ /** Required */
20
+ required?: boolean;
21
+ /** Disabled */
22
+ disabled?: boolean;
23
+ /** Placeholder for amount */
24
+ placeholder?: string;
25
+ /** Default currency when value.currency is unset */
26
+ defaultCurrency?: string;
27
+ /** Label for collapsible section */
28
+ optionsTitle?: string;
29
+ /** Allowed currencies in the select; when set, only these are shown (e.g. ['EUR'] for single-currency) */
30
+ currencies?: string[];
31
+ }
32
+ declare const PriceFieldComponent: ComponentType<PriceFieldComponentProps>;
33
+ export default PriceFieldComponent;
34
+ //# sourceMappingURL=PriceFieldComponent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PriceFieldComponent.d.ts","sourceRoot":"","sources":["../../../../src/components/form/fields/PriceFieldComponent.tsx"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAe,aAAa,EAAE,MAAM,OAAO,CAAC;AAExD,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,wBAAwB;IACvC,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,KAAK,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1B,qBAAqB;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACtC,kBAAkB;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kBAAkB;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6BAA6B;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0GAA0G;IAC1G,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAYD,QAAA,MAAM,mBAAmB,EAAE,aAAa,CAAC,wBAAwB,CAwMhE,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1 @@
1
+ "use client";import{jsx as t,jsxs as l}from"react/jsx-runtime";import{useId as U,useState as D}from"react";import{Input as C,Checkbox as E,Stack as _,Select as $,CollapsiblePrimitive as A,CollapsibleTrigger as L,CollapsibleContent as M}from"@donotdev/components";import{useTranslation as w,getCurrencySymbol as z}from"@donotdev/core";import{CirclePlus as Y,CircleMinus as q}from"lucide-react";const B=["EUR","USD","GBP","CHF","JPY","KRW"],G=({label:y,value:n,onChange:I,error:s,helperText:h,required:P=!1,disabled:i=!1,placeholder:N="0",defaultCurrency:r="EUR",optionsTitle:x="Price options",currencies:f})=>{const u=U(),{t:m}=w("crud"),o=f?.length?f:[...B],b=n?.currency??r,p=o.includes(b)?b:o[0]??r,O=n?.vatIncluded??!0,v=n?.discountPercent??0,S=`${y} (${z(p)})`,d=e=>{const c=e.amount!==void 0?e.amount:n?.amount??0;let a=e.currency!==void 0?e.currency:n?.currency??r;o.includes(a)||(a=p);const F=e.vatIncluded!==void 0?e.vatIncluded:n?.vatIncluded??!0,R=e.discountPercent!==void 0?e.discountPercent:n?.discountPercent??0;I({amount:Number(c),currency:a,vatIncluded:F,discountPercent:Number(R)})},T=e=>{const c=e.target.value;if(c===""||c===null){d({amount:0});return}const a=parseFloat(c);d({amount:isNaN(a)?0:a})},V=e=>{d({currency:e||r})},j=e=>{const c=e.target.value;if(c===""||c===null){d({discountPercent:0});return}const a=parseFloat(c);d({discountPercent:isNaN(a)?0:a})},[g,k]=D(!1);return l(A,{open:g,onOpenChange:k,children:[l(_,{gap:"medium",children:[l("div",{style:{display:"grid",gridTemplateColumns:"1fr auto",gap:"var(--gap-sm)",alignItems:"end"},children:[t(C,{id:u,type:"number",inputMode:"decimal",label:S,value:n?.amount!==void 0&&n?.amount!==null?n.amount:"",onChange:T,disabled:i,placeholder:N,required:P,min:0,step:.01,"data-variant":s?"destructive":void 0,"aria-invalid":s}),t(L,{asChild:!0,children:t("button",{type:"button","aria-label":x,"aria-expanded":g,className:"dndev-collapsible-trigger",style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"var(--gap-sm)",background:"none",border:"none",cursor:"pointer"},children:g?t(q,{className:"dndev-collapsible-icon","aria-hidden":"true"}):t(Y,{className:"dndev-collapsible-icon","aria-hidden":"true"})})})]}),t(M,{className:"dndev-collapsible-content",children:l("div",{style:{display:"grid",gridTemplateColumns:o.length>1?"1fr auto 1fr":"auto 1fr",gap:"var(--gap-sm)",alignItems:"end",paddingTop:"var(--gap-md)"},children:[o.length>1&&t($,{value:p,onValueChange:V,placeholder:r,options:o.map(e=>({value:e,label:e})),disabled:i,label:m("price.currency",{defaultValue:"Currency"})}),t(E,{id:`${u}-vat`,label:m("price.vatIncluded",{defaultValue:"VAT Incl."}),checked:O,onCheckedChange:e=>d({vatIncluded:e===!0}),disabled:i}),t(C,{id:`${u}-discount`,type:"number",inputMode:"decimal",min:0,max:100,step:1,value:v===0?"":v,onChange:j,disabled:i,placeholder:"0",label:m("price.discountLabel",{defaultValue:"Discount (%)"})})]})})]}),h&&t("p",{style:{fontSize:"var(--font-size-xs)",color:s?"var(--destructive-foreground)":"var(--muted-foreground)"},children:h})]})};var X=G;export{X as default};