mountain-ui 1.0.0

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 (164) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +139 -0
  3. package/index.js +36 -0
  4. package/package.json +79 -0
  5. package/src/app.html +12 -0
  6. package/src/lib/assets/favicon.svg +1 -0
  7. package/src/lib/registry/entityRegistry/components/EntityButton.svelte +14 -0
  8. package/src/lib/registry/entityRegistry/components/EntityCard.svelte +64 -0
  9. package/src/lib/registry/entityRegistry/components/EntityForm.svelte +98 -0
  10. package/src/lib/registry/entityRegistry/components/FieldButton copy.svelte +41 -0
  11. package/src/lib/registry/entityRegistry/components/FieldButton.svelte +41 -0
  12. package/src/lib/registry/entityRegistry/components/FieldCard.svelte +60 -0
  13. package/src/lib/registry/entityRegistry/components/FieldIcon.svelte +21 -0
  14. package/src/lib/registry/entityRegistry/components/FieldInput.svelte +23 -0
  15. package/src/lib/registry/entityRegistry/components/FieldIsRequiredIcon.svelte +22 -0
  16. package/src/lib/registry/entityRegistry/components/FieldIsSecretIcon.svelte +19 -0
  17. package/src/lib/registry/entityRegistry/components/FieldIsUniqueIcon.svelte +21 -0
  18. package/src/lib/registry/entityRegistry/components/FormCtx.svelte +7 -0
  19. package/src/lib/registry/entityRegistry/components/LinkIcon.svelte +20 -0
  20. package/src/lib/registry/entityRegistry/createEntity.js +40 -0
  21. package/src/lib/registry/entityRegistry/registry.svelte.js +140 -0
  22. package/src/lib/registry/fieldTypeRegistry/components/FieldTypeButton.svelte +12 -0
  23. package/src/lib/registry/fieldTypeRegistry/components/FieldTypeCard.svelte +11 -0
  24. package/src/lib/registry/fieldTypeRegistry/components/FieldTypeIcon.svelte +11 -0
  25. package/src/lib/registry/fieldTypeRegistry/components/FieldTypeInput.svelte +11 -0
  26. package/src/lib/registry/fieldTypeRegistry/components/Label.svelte +28 -0
  27. package/src/lib/registry/fieldTypeRegistry/components/Line.svelte +31 -0
  28. package/src/lib/registry/fieldTypeRegistry/createFieldType.js +34 -0
  29. package/src/lib/registry/fieldTypeRegistry/fieldTypes/FieldTypeButton.svelte +10 -0
  30. package/src/lib/registry/fieldTypeRegistry/fieldTypes/FieldTypeCard.svelte +41 -0
  31. package/src/lib/registry/fieldTypeRegistry/fieldTypes/Lines/Button.svelte +10 -0
  32. package/src/lib/registry/fieldTypeRegistry/fieldTypes/Lines/Card.svelte +6 -0
  33. package/src/lib/registry/fieldTypeRegistry/fieldTypes/Lines/Icon.svelte +5 -0
  34. package/src/lib/registry/fieldTypeRegistry/fieldTypes/Lines/Input.svelte +150 -0
  35. package/src/lib/registry/fieldTypeRegistry/fieldTypes/Lines/index.js +37 -0
  36. package/src/lib/registry/fieldTypeRegistry/fieldTypes/Link/Button.svelte +10 -0
  37. package/src/lib/registry/fieldTypeRegistry/fieldTypes/Link/Card.svelte +6 -0
  38. package/src/lib/registry/fieldTypeRegistry/fieldTypes/Link/Icon.svelte +4 -0
  39. package/src/lib/registry/fieldTypeRegistry/fieldTypes/Link/Input/Input.svelte +106 -0
  40. package/src/lib/registry/fieldTypeRegistry/fieldTypes/Link/Input/LinkCard.svelte +49 -0
  41. package/src/lib/registry/fieldTypeRegistry/fieldTypes/Link/Input/LinkCardSelection.svelte +65 -0
  42. package/src/lib/registry/fieldTypeRegistry/fieldTypes/Link/Input/utils.js +25 -0
  43. package/src/lib/registry/fieldTypeRegistry/fieldTypes/Link/index.js +37 -0
  44. package/src/lib/registry/fieldTypeRegistry/fieldTypes/Primary/Button.svelte +10 -0
  45. package/src/lib/registry/fieldTypeRegistry/fieldTypes/Primary/Card.svelte +6 -0
  46. package/src/lib/registry/fieldTypeRegistry/fieldTypes/Primary/Icon.svelte +5 -0
  47. package/src/lib/registry/fieldTypeRegistry/fieldTypes/Primary/index.js +36 -0
  48. package/src/lib/registry/fieldTypeRegistry/fieldTypes/calculation/CalculationColumn/Button.svelte +8 -0
  49. package/src/lib/registry/fieldTypeRegistry/fieldTypes/calculation/CalculationColumn/Card.svelte +6 -0
  50. package/src/lib/registry/fieldTypeRegistry/fieldTypes/calculation/CalculationColumn/Icon.svelte +9 -0
  51. package/src/lib/registry/fieldTypeRegistry/fieldTypes/calculation/CalculationColumn/Input.svelte +153 -0
  52. package/src/lib/registry/fieldTypeRegistry/fieldTypes/calculation/CalculationColumn/index.js +37 -0
  53. package/src/lib/registry/fieldTypeRegistry/fieldTypes/list/ListCheckbox/Button.svelte +8 -0
  54. package/src/lib/registry/fieldTypeRegistry/fieldTypes/list/ListCheckbox/Card.svelte +6 -0
  55. package/src/lib/registry/fieldTypeRegistry/fieldTypes/list/ListCheckbox/Icon.svelte +4 -0
  56. package/src/lib/registry/fieldTypeRegistry/fieldTypes/list/ListCheckbox/Input.svelte +88 -0
  57. package/src/lib/registry/fieldTypeRegistry/fieldTypes/list/ListCheckbox/index.js +39 -0
  58. package/src/lib/registry/fieldTypeRegistry/fieldTypes/list/ListRadio/Button.svelte +8 -0
  59. package/src/lib/registry/fieldTypeRegistry/fieldTypes/list/ListRadio/Card.svelte +6 -0
  60. package/src/lib/registry/fieldTypeRegistry/fieldTypes/list/ListRadio/Icon.svelte +4 -0
  61. package/src/lib/registry/fieldTypeRegistry/fieldTypes/list/ListRadio/Input.svelte +95 -0
  62. package/src/lib/registry/fieldTypeRegistry/fieldTypes/list/ListRadio/index.js +44 -0
  63. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/NumberInt/Button.svelte +8 -0
  64. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/NumberInt/Card.svelte +6 -0
  65. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/NumberInt/Icon.svelte +5 -0
  66. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/NumberInt/Input.svelte +16 -0
  67. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/NumberInt/index.js +41 -0
  68. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/float/FieldTypeInputFloat.svelte +55 -0
  69. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/float/NumberFloatDefault/Button.svelte +8 -0
  70. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/float/NumberFloatDefault/Card.svelte +6 -0
  71. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/float/NumberFloatDefault/Icon.svelte +7 -0
  72. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/float/NumberFloatDefault/Input.svelte +14 -0
  73. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/float/NumberFloatDefault/index.js +41 -0
  74. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/float/NumberFloatPercent/Button.svelte +8 -0
  75. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/float/NumberFloatPercent/Card.svelte +6 -0
  76. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/float/NumberFloatPercent/Icon.svelte +6 -0
  77. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/float/NumberFloatPercent/Input.svelte +15 -0
  78. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/float/NumberFloatPercent/index.js +41 -0
  79. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/float/NumberFloatPrice/Button.svelte +8 -0
  80. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/float/NumberFloatPrice/Card.svelte +6 -0
  81. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/float/NumberFloatPrice/Icon.svelte +5 -0
  82. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/float/NumberFloatPrice/Input.svelte +15 -0
  83. package/src/lib/registry/fieldTypeRegistry/fieldTypes/number/float/NumberFloatPrice/index.js +41 -0
  84. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/TextTextarea/Button.svelte +8 -0
  85. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/TextTextarea/Card.svelte +6 -0
  86. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/TextTextarea/Icon.svelte +8 -0
  87. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/TextTextarea/Input.svelte +14 -0
  88. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/TextTextarea/index.js +39 -0
  89. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/FieldTypeInputText.svelte +14 -0
  90. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharDefault/Button.svelte +8 -0
  91. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharDefault/Card.svelte +6 -0
  92. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharDefault/Icon.svelte +8 -0
  93. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharDefault/Input.svelte +15 -0
  94. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharDefault/index.js +38 -0
  95. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharEmail/Button.svelte +8 -0
  96. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharEmail/Card.svelte +6 -0
  97. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharEmail/Icon.svelte +4 -0
  98. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharEmail/Input.svelte +14 -0
  99. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharEmail/index.js +38 -0
  100. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharPassword/Button.svelte +8 -0
  101. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharPassword/Card.svelte +6 -0
  102. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharPassword/Icon.svelte +7 -0
  103. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharPassword/Input.svelte +37 -0
  104. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharPassword/index.js +38 -0
  105. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharPhone/Button.svelte +8 -0
  106. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharPhone/Card.svelte +6 -0
  107. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharPhone/Icon.svelte +3 -0
  108. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharPhone/Input.svelte +14 -0
  109. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharPhone/index.js +38 -0
  110. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharUrl/Button.svelte +8 -0
  111. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharUrl/Card.svelte +6 -0
  112. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharUrl/Icon.svelte +7 -0
  113. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharUrl/Input.svelte +14 -0
  114. package/src/lib/registry/fieldTypeRegistry/fieldTypes/text/varchar/TextVarcharUrl/index.js +38 -0
  115. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeCreatedAt/Button.svelte +8 -0
  116. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeCreatedAt/Card.svelte +6 -0
  117. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeCreatedAt/Icon.svelte +11 -0
  118. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeCreatedAt/index.js +38 -0
  119. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeDate/Button.svelte +8 -0
  120. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeDate/Card.svelte +6 -0
  121. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeDate/Icon.svelte +12 -0
  122. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeDate/Input.svelte +15 -0
  123. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeDate/index.js +39 -0
  124. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeDatetime/Button.svelte +8 -0
  125. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeDatetime/Card.svelte +6 -0
  126. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeDatetime/Icon.svelte +11 -0
  127. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeDatetime/Input.svelte +15 -0
  128. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeDatetime/index.js +39 -0
  129. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeDay/Button.svelte +8 -0
  130. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeDay/Card.svelte +6 -0
  131. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeDay/Icon.svelte +12 -0
  132. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeDay/Input.svelte +15 -0
  133. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeDay/index.js +39 -0
  134. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeHour/Button.svelte +8 -0
  135. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeHour/Card.svelte +6 -0
  136. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeHour/Icon.svelte +4 -0
  137. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeHour/Input.svelte +15 -0
  138. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeHour/index.js +39 -0
  139. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeMonth/Button.svelte +8 -0
  140. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeMonth/Card.svelte +6 -0
  141. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeMonth/Icon.svelte +12 -0
  142. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeMonth/Input.svelte +15 -0
  143. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeMonth/index.js +39 -0
  144. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeMonthOfYear/Button.svelte +8 -0
  145. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeMonthOfYear/Card.svelte +6 -0
  146. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeMonthOfYear/Icon.svelte +12 -0
  147. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeMonthOfYear/Input.svelte +15 -0
  148. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeMonthOfYear/index.js +39 -0
  149. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeUpdatedAt/Button.svelte +8 -0
  150. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeUpdatedAt/Card.svelte +6 -0
  151. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeUpdatedAt/Icon.svelte +11 -0
  152. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeUpdatedAt/index.js +38 -0
  153. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeYear/Button.svelte +8 -0
  154. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeYear/Card.svelte +6 -0
  155. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeYear/Icon.svelte +12 -0
  156. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeYear/Input.svelte +15 -0
  157. package/src/lib/registry/fieldTypeRegistry/fieldTypes/time/TimeYear/index.js +39 -0
  158. package/src/lib/registry/fieldTypeRegistry/registerDefaultFieldTypes.js +66 -0
  159. package/src/lib/registry/fieldTypeRegistry/registry.svelte.js +72 -0
  160. package/src/routes/+layout.svelte +623 -0
  161. package/src/routes/+page.svelte +196 -0
  162. package/src/routes/global.css +197 -0
  163. package/src/routes/login/+page.svelte +112 -0
  164. package/src/routes/registry/fieldRegistry.svelte.js +37 -0
@@ -0,0 +1,22 @@
1
+ <script>
2
+ let {size = "18px", color="var(--red)"} = $props()
3
+ </script>
4
+ <!-- style="--size:{size};--color:{color};" -->
5
+ <svg style="--size:{size};--color:{color};" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
6
+ <path d="M16.42 7.95012C18.86 10.3901 18.86 14.3501 16.42 16.7901C13.98 19.2301 10.02 19.2301 7.58 16.7901C5.14 14.3501 5.14 10.3901 7.58 7.95012C10.02 5.51012 13.98 5.51012 16.42 7.95012Z" fill="#FF383C"/>
7
+ <path opacity="0.4" d="M8.24906 22.3899C8.15906 22.3899 8.05906 22.3699 7.96906 22.3399C5.71906 21.4399 3.89905 19.8499 2.67905 17.7499C1.49905 15.6999 1.02905 13.3799 1.33905 11.0199C1.38905 10.6099 1.77905 10.3199 2.17905 10.3699C2.58905 10.4199 2.87904 10.7999 2.82904 11.2099C2.56904 13.2299 2.96907 15.2299 3.97907 16.9899C5.01907 18.7899 6.58905 20.1599 8.51905 20.9299C8.89905 21.0899 9.08906 21.5198 8.93906 21.9098C8.82906 22.2098 8.53906 22.3899 8.24906 22.3899Z" fill="#FF383C"/>
8
+ <path opacity="0.4" d="M5.84961 5.22986C5.62961 5.22986 5.40961 5.12988 5.25961 4.93988C4.99961 4.60988 5.05962 4.13989 5.38962 3.88989C7.29962 2.39989 9.57961 1.60986 11.9996 1.60986C14.3596 1.60986 16.6096 2.36988 18.4996 3.80988C18.8296 4.05988 18.8896 4.52986 18.6396 4.85986C18.3896 5.18986 17.9196 5.24988 17.5896 4.99988C15.9696 3.75988 14.0396 3.10986 11.9996 3.10986C9.91961 3.10986 7.9496 3.78989 6.3096 5.06989C6.1696 5.17989 6.00961 5.22986 5.84961 5.22986Z" fill="#FF383C"/>
9
+ <path opacity="0.4" d="M15.7507 22.3901C15.4507 22.3901 15.1707 22.2101 15.0507 21.9201C14.9007 21.5401 15.0807 21.1001 15.4707 20.9401C17.4007 20.1601 18.9707 18.8001 20.0107 17.0001C21.0307 15.2401 21.4307 13.2401 21.1607 11.2201C21.1107 10.8101 21.4007 10.4301 21.8107 10.3801C22.2107 10.3301 22.6007 10.6201 22.6507 11.0301C22.9507 13.3801 22.4907 15.7101 21.3107 17.7601C20.1007 19.8601 18.2707 21.4401 16.0207 22.3501C15.9407 22.3701 15.8507 22.3901 15.7507 22.3901Z" fill="#FF383C"/>
10
+ </svg>
11
+
12
+
13
+ <style>
14
+ svg {
15
+ width: var(--size);
16
+ height: auto;
17
+ aspect-ratio: 1/1;
18
+ }
19
+ svg path {
20
+ fill: var(--color);
21
+ }
22
+ </style>
@@ -0,0 +1,19 @@
1
+ <script>
2
+ let {size = "18px", color="var(--red)"} = $props()
3
+ </script>
4
+ <!-- style="--size:{size};--color:{color};" -->
5
+ <svg style="--size:{size};--color:{color};" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
6
+ <path opacity="0.4" d="M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22Z" fill="#FF383C"/>
7
+ <path d="M15.7491 10.73V10C15.7491 9.07 15.7491 6.25 11.9991 6.25C8.24915 6.25 8.24915 9.07 8.24915 10V10.73C7.02915 11 6.61914 11.79 6.61914 13.5V14.5C6.61914 16.7 7.29915 17.38 9.49915 17.38H14.4991C16.6991 17.38 17.3792 16.7 17.3792 14.5V13.5C17.3792 11.79 16.9691 11 15.7491 10.73ZM11.9991 15.1C11.3891 15.1 10.8992 14.61 10.8992 14C10.8992 13.39 11.3891 12.9 11.9991 12.9C12.6091 12.9 13.0991 13.39 13.0991 14C13.0991 14.61 12.6091 15.1 11.9991 15.1ZM14.2491 10.62H9.74915V10C9.74915 8.54 10.1091 7.75 11.9991 7.75C13.8891 7.75 14.2491 8.54 14.2491 10V10.62Z" fill="#FF383C"/>
8
+ </svg>
9
+
10
+ <style>
11
+ svg {
12
+ width: var(--size);
13
+ height: auto;
14
+ aspect-ratio: 1/1;
15
+ }
16
+ svg path {
17
+ fill: var(--color);
18
+ }
19
+ </style>
@@ -0,0 +1,21 @@
1
+ <script>
2
+ let {size = "18px", color="var(--green)"} = $props()
3
+ </script>
4
+ <!-- style="--size:{size};--color:{color};" -->
5
+ <svg style="--size:{size};--color:{color};" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
6
+ <path opacity="0.4" d="M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22Z" fill="#34C759"/>
7
+ <path d="M11.9996 9.87012C11.5096 9.87012 11.0996 10.2701 11.0996 10.7701V13.2401C11.0996 13.7401 11.4996 14.1401 11.9996 14.1401C12.4996 14.1401 12.8996 13.7401 12.8996 13.2401V10.7701C12.8996 10.2701 12.4896 9.87012 11.9996 9.87012Z" fill="#34C759"/>
8
+ <path d="M12 17.5499C9.38 17.5499 7.25 15.4199 7.25 12.7999V11.2C7.25 8.57995 9.38 6.44995 12 6.44995C14.62 6.44995 16.75 8.57995 16.75 11.2V12.7999C16.75 15.4199 14.62 17.5499 12 17.5499ZM12 7.94995C10.21 7.94995 8.75 9.40995 8.75 11.2V12.7999C8.75 14.5899 10.21 16.0499 12 16.0499C13.79 16.0499 15.25 14.5899 15.25 12.7999V11.2C15.25 9.40995 13.79 7.94995 12 7.94995Z" fill="#34C759"/>
9
+ </svg>
10
+
11
+
12
+ <style>
13
+ svg {
14
+ width: var(--size);
15
+ height: auto;
16
+ aspect-ratio: 1/1;
17
+ }
18
+ svg path {
19
+ fill: var(--color);
20
+ }
21
+ </style>
@@ -0,0 +1,7 @@
1
+ <script>
2
+
3
+ let { ctx = $bindable({}), detailsCtx = $bindable({})} = $props()
4
+
5
+ </script>
6
+
7
+ <slot/>
@@ -0,0 +1,20 @@
1
+ <script>
2
+ let {size = "24px", color="var(--font-1)"} = $props()
3
+ </script>
4
+
5
+ <svg style="--size:{size};--color:{color};" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
6
+ <path d="M12.1998 17.3799C11.4998 17.3799 10.7898 17.1099 10.2598 16.5799C9.73977 16.0599 9.44977 15.3699 9.44977 14.6399C9.44977 13.9099 9.73977 13.2099 10.2598 12.6999L11.6697 11.2899C11.9597 10.9999 12.4397 10.9999 12.7297 11.2899C13.0197 11.5799 13.0197 12.0599 12.7297 12.3499L11.3198 13.7599C11.0798 13.9999 10.9498 14.3099 10.9498 14.6399C10.9498 14.9699 11.0798 15.2899 11.3198 15.5199C11.8098 16.0099 12.5998 16.0099 13.0898 15.5199L15.3098 13.2999C16.5798 12.0299 16.5798 9.96994 15.3098 8.69994C14.0398 7.42994 11.9798 7.42994 10.7098 8.69994L8.28973 11.1199C7.77973 11.6299 7.49976 12.2999 7.49976 13.0099C7.49976 13.7199 7.77973 14.3999 8.28973 14.8999C8.57973 15.1899 8.57973 15.6699 8.28973 15.9599C7.99973 16.2499 7.51974 16.2499 7.22974 15.9599C6.43974 15.1699 6.00977 14.1199 6.00977 12.9999C6.00977 11.8799 6.43974 10.8299 7.22974 10.0399L9.64978 7.61992C11.4998 5.76992 14.5198 5.76992 16.3698 7.61992C18.2198 9.46992 18.2198 12.4899 16.3698 14.3399L14.1498 16.5599C13.6098 17.1099 12.9098 17.3799 12.1998 17.3799Z" fill="#292D32"/>
7
+ <path d="M12 22.75C6.07 22.75 1.25 17.93 1.25 12C1.25 6.07 6.07 1.25 12 1.25C17.93 1.25 22.75 6.07 22.75 12C22.75 17.93 17.93 22.75 12 22.75ZM12 2.75C6.9 2.75 2.75 6.9 2.75 12C2.75 17.1 6.9 21.25 12 21.25C17.1 21.25 21.25 17.1 21.25 12C21.25 6.9 17.1 2.75 12 2.75Z" fill="#292D32"/>
8
+ </svg>
9
+
10
+
11
+ <style>
12
+ svg {
13
+ width: var(--size);
14
+ height: auto;
15
+ aspect-ratio: 1/1;
16
+ }
17
+ svg path {
18
+ fill: var(--color);
19
+ }
20
+ </style>
@@ -0,0 +1,40 @@
1
+
2
+ export function createEntity(config = {}) {
3
+ const entity = {
4
+ "id": null,
5
+ "version": 1,
6
+ "plural_name": "",
7
+ "singular_name": "",
8
+ "normalized_name": "",
9
+ "slug": "",
10
+ "symbol": "#",
11
+ "can_be_created": true,
12
+ "can_be_edited": true,
13
+ "can_be_deleted": true,
14
+ "is_locked": false,
15
+ "updated_at": null,
16
+ "created_at": null,
17
+ "fields": [
18
+ {
19
+ "id": null,
20
+ "link_to_field_id": null,
21
+ "entity_id": null,
22
+ "type": "primary",
23
+ "name": "id",
24
+ "normalized_name": "id",
25
+ "is_locked": true,
26
+ "is_required": false,
27
+ "is_unique": true,
28
+ "is_secret": false,
29
+ "props": {}
30
+ }
31
+ ],
32
+ };
33
+
34
+ Object.assign(entity, config);
35
+
36
+ entity.getField = (id) =>
37
+ entity.fields.find(field => field.id === id);
38
+
39
+ return entity;
40
+ }
@@ -0,0 +1,140 @@
1
+ import { writable, derived, get } from "svelte/store";
2
+
3
+ function createEntityRegistry() {
4
+
5
+ const store = writable({});
6
+
7
+ const all = derived(
8
+ store,
9
+ ($entities) => Object.values($entities)
10
+ );
11
+
12
+ return {
13
+
14
+ subscribe: store.subscribe,
15
+
16
+ register(entity) {
17
+
18
+ store.update(entities => ({
19
+ ...entities,
20
+ [entity.id]: entity
21
+ }));
22
+
23
+ },
24
+
25
+ unregister(id) {
26
+
27
+ store.update(entities => {
28
+
29
+ const copy = { ...entities };
30
+
31
+ delete copy[id];
32
+
33
+ return copy;
34
+
35
+ });
36
+
37
+ },
38
+
39
+ get(id) {
40
+
41
+ return get(store)[id];
42
+
43
+ },
44
+
45
+ select(id) {
46
+
47
+ return derived(
48
+ store,
49
+ ($entities) => $entities[id]
50
+ );
51
+
52
+ },
53
+
54
+ getLinkedField(entityId, linkId) {
55
+
56
+ const entities = get(store);
57
+
58
+ // Si l'entité est connue, on cherche directement dedans
59
+ if (!entityId) return null
60
+
61
+ const entity = entities[entityId];
62
+
63
+
64
+ return entity.fields?.find(field => field.props.linkId === linkId) ?? null;
65
+ },
66
+ getField(id, entityId = null) {
67
+
68
+ const entities = get(store);
69
+
70
+ // Si l'entité est connue, on cherche directement dedans
71
+ if (entityId) {
72
+
73
+ const entity = entities[entityId];
74
+
75
+ if (!entity) {
76
+ return null;
77
+ }
78
+
79
+ return entity.fields?.find(field => field.id === id) ?? null;
80
+ }
81
+
82
+
83
+ // Sinon on parcourt toutes les entités
84
+ for (const entity of Object.values(entities)) {
85
+
86
+ const field = entity.fields?.find(field => field.id === id);
87
+
88
+ if (field) {
89
+ return field;
90
+ }
91
+
92
+ }
93
+
94
+ return null;
95
+
96
+ },
97
+
98
+ selectField(id, entityId = null) {
99
+
100
+ return derived(
101
+ store,
102
+ ($entities) => {
103
+
104
+ if (entityId) {
105
+
106
+ const entity = $entities[entityId];
107
+
108
+ return entity?.fields?.find(field => field.id === id) ?? null;
109
+
110
+ }
111
+
112
+
113
+ for (const entity of Object.values($entities)) {
114
+
115
+ const field = entity.fields?.find(field => field.id === id);
116
+
117
+ if (field) {
118
+ return field;
119
+ }
120
+
121
+ }
122
+
123
+ return null;
124
+
125
+ }
126
+ );
127
+
128
+ },
129
+
130
+ getAll() {
131
+
132
+ return all;
133
+
134
+ }
135
+
136
+ };
137
+
138
+ }
139
+
140
+ export const entityRegistry = createEntityRegistry();
@@ -0,0 +1,12 @@
1
+ <script>
2
+ import FieldButton from "../fieldTypes/FieldTypeButton.svelte";
3
+ import { fieldTypeRegistry } from "../registry.svelte";
4
+
5
+ let {type, variant="ghost", ...props} = $props()
6
+
7
+ const field = fieldTypeRegistry.select(type)
8
+ </script>
9
+
10
+ {#if $field}
11
+ <svelte:component {variant} {...props} this={$field.components.button} {...$field}></svelte:component>
12
+ {/if}
@@ -0,0 +1,11 @@
1
+ <script>
2
+ import { fieldTypeRegistry } from "../registry.svelte";
3
+
4
+ let {type, variant="ghost", ...props} = $props()
5
+
6
+ const field = fieldTypeRegistry.select(type)
7
+ </script>
8
+
9
+ {#if $field}
10
+ <svelte:component {variant} {...props} this={$field.components.card} {...$field}></svelte:component>
11
+ {/if}
@@ -0,0 +1,11 @@
1
+ <script>
2
+ import { fieldTypeRegistry } from "../registry.svelte";
3
+
4
+ let {type, ...props} = $props()
5
+
6
+ const field = fieldTypeRegistry.select(type)
7
+ </script>
8
+
9
+ {#if $field && $field?.components?.icon}
10
+ <svelte:component {...props} this={$field.components.icon} field={$field}></svelte:component>
11
+ {/if}
@@ -0,0 +1,11 @@
1
+ <script>
2
+ import { fieldTypeRegistry } from "../registry.svelte";
3
+
4
+ let {type, ...props} = $props()
5
+
6
+ const field = fieldTypeRegistry.select(type)
7
+ </script>
8
+
9
+ {#if $field}
10
+ <svelte:component {...props} this={$field.components.input} field={$field}></svelte:component>
11
+ {/if}
@@ -0,0 +1,28 @@
1
+ <script>
2
+ import FieldIsRequiredIcon from '$lib/registry/entityRegistry/components/FieldIsRequiredIcon.svelte';
3
+ import FieldIsSecretIcon from '$lib/registry/entityRegistry/components/FieldIsSecretIcon.svelte';
4
+ import FieldIsUniqueIcon from '$lib/registry/entityRegistry/components/FieldIsUniqueIcon.svelte';
5
+
6
+ let { label = '', required = false, unique = false, secret = false } = $props();
7
+ </script>
8
+
9
+ <h4>
10
+ {label}
11
+ <span class="icons">
12
+ {#if required}
13
+ <FieldIsRequiredIcon size="12px"></FieldIsRequiredIcon>
14
+ {/if}
15
+ {#if unique}
16
+ <FieldIsUniqueIcon size="12px"></FieldIsUniqueIcon>
17
+ {/if}
18
+ {#if secret}
19
+ <FieldIsSecretIcon size="12px"></FieldIsSecretIcon>
20
+ {/if}
21
+ </span>
22
+ </h4>
23
+
24
+ <style>
25
+ .icons {
26
+ vertical-align: super;
27
+ }
28
+ </style>
@@ -0,0 +1,31 @@
1
+ <script>
2
+ let { children, compact = false } = $props();
3
+ </script>
4
+
5
+ <div class="line" class:compact>
6
+ {@render children()}
7
+ </div>
8
+
9
+ <style>
10
+ .line {
11
+ display: grid;
12
+ grid-template-columns: 1fr 350px;
13
+ width: min(100%, 900px);
14
+ padding: var(--pad-s);
15
+ gap: var(--pad-s);
16
+ }
17
+
18
+ .line:not(:last-of-type) {
19
+ border-bottom: 1px solid var(--stroke);
20
+ }
21
+
22
+ @media (max-width: 500px) {
23
+ .line {
24
+ grid-template-columns: 1fr;
25
+ }
26
+ }
27
+ .line.compact {
28
+ grid-template-columns: 1fr;
29
+ border-bottom:initial;
30
+ }
31
+ </style>
@@ -0,0 +1,34 @@
1
+ export function createFieldType(config) {
2
+ return {
3
+ type:"",
4
+
5
+ category_path:[],
6
+
7
+ label: "",
8
+ description: "",
9
+
10
+ is_hidden:true,
11
+
12
+ can_be_required:true,
13
+ can_be_unique:true,
14
+
15
+ defaultProps:{},
16
+
17
+ components: {
18
+ icon: null,
19
+ button: null,
20
+ card: null,
21
+ input: null,
22
+ cell: null,
23
+ filter: null,
24
+ properties: null
25
+ },
26
+
27
+ formatter: (value) => value,
28
+ parser: (value) => value,
29
+
30
+ validate: () => true,
31
+
32
+ ...config
33
+ };
34
+ }
@@ -0,0 +1,10 @@
1
+ <script>
2
+ import { Button } from 'hamzus-ui';
3
+
4
+ let { children, label, components, ...props } = $props();
5
+ </script>
6
+
7
+ <Button {...props}>
8
+ <svelte:component this={components.icon}></svelte:component>
9
+ <h5>{label}</h5>
10
+ </Button>
@@ -0,0 +1,41 @@
1
+ <script>
2
+ import { Button } from 'hamzus-ui';
3
+
4
+ let { children, label, description, components, style, ...props } = $props();
5
+ </script>
6
+
7
+ <Button {...props}>
8
+ <div class="content">
9
+ <div class="left">
10
+ <svelte:component this={components.icon}></svelte:component>
11
+ <div class="text">
12
+ <h5>{label}</h5>
13
+ <p>{description}</p>
14
+ </div>
15
+ </div>
16
+ <slot name="endContent" />
17
+ </div>
18
+ </Button>
19
+
20
+ <style>
21
+ .content {
22
+ display: flex;
23
+ align-items: center;
24
+ justify-content: space-between;
25
+ padding: var(--pad-xl) var(--pad-xl) var(--pad-xl) 0;
26
+ }
27
+
28
+ .left {
29
+ display: flex;
30
+ column-gap: var(--pad-xl);
31
+ }
32
+
33
+ .left :global(svg path) {
34
+ fill: var(--font-2);
35
+ }
36
+
37
+ .text {
38
+ text-align: left;
39
+ }
40
+
41
+ </style>
@@ -0,0 +1,10 @@
1
+ <script>
2
+ import FieldTypeButton from "../FieldTypeButton.svelte";
3
+ import Icon from "./Icon.svelte";
4
+
5
+ let {...props} = $props()
6
+ </script>
7
+
8
+ <FieldTypeButton {...props}>
9
+
10
+ </FieldTypeButton>
@@ -0,0 +1,6 @@
1
+ <script>
2
+ import FieldCard from "../FieldTypeCard.svelte";
3
+ let {...props} = $props()
4
+ </script>
5
+
6
+ <FieldCard {...props}></FieldCard>
@@ -0,0 +1,5 @@
1
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M21 7.75H3C2.59 7.75 2.25 7.41 2.25 7C2.25 6.59 2.59 6.25 3 6.25H21C21.41 6.25 21.75 6.59 21.75 7C21.75 7.41 21.41 7.75 21 7.75Z" fill="#292D32"/>
3
+ <path d="M21 12.75H3C2.59 12.75 2.25 12.41 2.25 12C2.25 11.59 2.59 11.25 3 11.25H21C21.41 11.25 21.75 11.59 21.75 12C21.75 12.41 21.41 12.75 21 12.75Z" fill="#292D32"/>
4
+ <path d="M21 17.75H3C2.59 17.75 2.25 17.41 2.25 17C2.25 16.59 2.59 16.25 3 16.25H21C21.41 16.25 21.75 16.59 21.75 17C21.75 17.41 21.41 17.75 21 17.75Z" fill="#292D32"/>
5
+ </svg>
@@ -0,0 +1,150 @@
1
+ <script>
2
+ import FieldInput from '$lib/registry/entityRegistry/components/FieldInput.svelte';
3
+ import { entityRegistry } from '$lib/registry/entityRegistry/registry.svelte';
4
+ import { Button, IconButton, ResponsiveTable } from 'hamzus-ui';
5
+
6
+ let {
7
+ value = $bindable(null),
8
+ label = '',
9
+ required = false,
10
+ unique = false,
11
+ secret = false,
12
+ compact = false,
13
+ linkId = null,
14
+ columns = [],
15
+ onChange = () => {},
16
+ onChangeDetails = () => {},
17
+ ...props
18
+ } = $props();
19
+
20
+ function createLine() {
21
+ return {
22
+ id: crypto.randomUUID(),
23
+ ctx: {},
24
+ detailsCtx: {}
25
+ };
26
+ }
27
+
28
+ let table = $state([createLine()]);
29
+
30
+ function handleAddLine() {
31
+ table = [...table, createLine()];
32
+ }
33
+
34
+ const entity = entityRegistry.select(linkId);
35
+
36
+ function handleDeleteLine(lineIndex) {
37
+ table = table.filter((_, i) => i !== lineIndex);
38
+ handleChangeDetailsCtx();
39
+ handleChange();
40
+ }
41
+ function handleChangeDetailsCtx() {
42
+ onChangeDetails(table);
43
+ }
44
+ function handleChange() {
45
+ const value = JSON.stringify(table.map((line) => line.ctx));
46
+
47
+ onChange(value);
48
+ }
49
+ </script>
50
+
51
+ <h4>{label}</h4>
52
+ <ResponsiveTable.Root let:ctx>
53
+ <ResponsiveTable.Header>
54
+ {#if columns.length > 0}
55
+ {#each columns as column, columnIndex}
56
+ <ResponsiveTable.HeaderCell align="left" label={column.name ?? '-'} {ctx}>
57
+ <h6>{columns[columnIndex].name ?? ''}</h6>
58
+ <!-- {column.columnIndex} -->
59
+ </ResponsiveTable.HeaderCell>
60
+ {/each}
61
+ {/if}
62
+ </ResponsiveTable.Header>
63
+ <ResponsiveTable.Body>
64
+ {#if $entity}
65
+ {#each table as line, lineIndex (line.id)}
66
+ <ResponsiveTable.Line>
67
+ {#each columns as column, columnIndex}
68
+ <ResponsiveTable.Cell {ctx}>
69
+ {#each column.rows as row, rowIndex}
70
+ <FieldInput
71
+ compact
72
+ detailsCtx={table[lineIndex].detailsCtx}
73
+ ctx={table[lineIndex].ctx}
74
+ onChangeDetails={(value) => {
75
+ table[lineIndex].detailsCtx[row.fieldId] = value;
76
+ table = [...table];
77
+ handleChangeDetailsCtx();
78
+ }}
79
+ onChange={(value) => {
80
+ table[lineIndex].ctx[row.fieldId] = value;
81
+ table = [...table];
82
+ handleChange();
83
+ }}
84
+ id={row.fieldId}
85
+ value={table[lineIndex].ctx[row.fieldId]}
86
+ ></FieldInput>
87
+ {/each}
88
+ {#if columnIndex + 1 === columns.length}
89
+ <div class="delete">
90
+ <IconButton
91
+ variant="destructive"
92
+ onClick={() => {
93
+ handleDeleteLine(lineIndex);
94
+ }}
95
+ >
96
+ <svg
97
+ width="24"
98
+ height="24"
99
+ viewBox="0 0 24 24"
100
+ fill="none"
101
+ xmlns="http://www.w3.org/2000/svg"
102
+ >
103
+ <path
104
+ d="M20.9997 6.72998C20.9797 6.72998 20.9497 6.72998 20.9197 6.72998C15.6297 6.19998 10.3497 5.99998 5.11967 6.52998L3.07967 6.72998C2.65967 6.76998 2.28967 6.46998 2.24967 6.04998C2.20967 5.62998 2.50967 5.26998 2.91967 5.22998L4.95967 5.02998C10.2797 4.48998 15.6697 4.69998 21.0697 5.22998C21.4797 5.26998 21.7797 5.63998 21.7397 6.04998C21.7097 6.43998 21.3797 6.72998 20.9997 6.72998Z"
105
+ fill="#292D32"
106
+ />
107
+ <path
108
+ d="M8.50074 5.72C8.46074 5.72 8.42074 5.72 8.37074 5.71C7.97074 5.64 7.69074 5.25 7.76074 4.85L7.98074 3.54C8.14074 2.58 8.36074 1.25 10.6907 1.25H13.3107C15.6507 1.25 15.8707 2.63 16.0207 3.55L16.2407 4.85C16.3107 5.26 16.0307 5.65 15.6307 5.71C15.2207 5.78 14.8307 5.5 14.7707 5.1L14.5507 3.8C14.4107 2.93 14.3807 2.76 13.3207 2.76H10.7007C9.64074 2.76 9.62074 2.9 9.47074 3.79L9.24074 5.09C9.18074 5.46 8.86074 5.72 8.50074 5.72Z"
109
+ fill="#292D32"
110
+ />
111
+ <path
112
+ d="M15.2104 22.7501H8.79039C5.30039 22.7501 5.16039 20.8201 5.05039 19.2601L4.40039 9.19007C4.37039 8.78007 4.69039 8.42008 5.10039 8.39008C5.52039 8.37008 5.87039 8.68008 5.90039 9.09008L6.55039 19.1601C6.66039 20.6801 6.70039 21.2501 8.79039 21.2501H15.2104C17.3104 21.2501 17.3504 20.6801 17.4504 19.1601L18.1004 9.09008C18.1304 8.68008 18.4904 8.37008 18.9004 8.39008C19.3104 8.42008 19.6304 8.77007 19.6004 9.19007L18.9504 19.2601C18.8404 20.8201 18.7004 22.7501 15.2104 22.7501Z"
113
+ fill="#292D32"
114
+ />
115
+ <path
116
+ d="M13.6601 17.25H10.3301C9.92008 17.25 9.58008 16.91 9.58008 16.5C9.58008 16.09 9.92008 15.75 10.3301 15.75H13.6601C14.0701 15.75 14.4101 16.09 14.4101 16.5C14.4101 16.91 14.0701 17.25 13.6601 17.25Z"
117
+ fill="#292D32"
118
+ />
119
+ <path
120
+ d="M14.5 13.25H9.5C9.09 13.25 8.75 12.91 8.75 12.5C8.75 12.09 9.09 11.75 9.5 11.75H14.5C14.91 11.75 15.25 12.09 15.25 12.5C15.25 12.91 14.91 13.25 14.5 13.25Z"
121
+ fill="#292D32"
122
+ />
123
+ </svg>
124
+ </IconButton>
125
+ </div>
126
+ {/if}
127
+ </ResponsiveTable.Cell>
128
+ {/each}
129
+ </ResponsiveTable.Line>
130
+ {/each}
131
+ {/if}
132
+ </ResponsiveTable.Body>
133
+ </ResponsiveTable.Root>
134
+ <Button label="ajouter une rangée" onClick={handleAddLine}></Button>
135
+
136
+ <style>
137
+ :global(.table-container .line):has(.delete :global(.button):hover) {
138
+ background-color: var(--red-b);
139
+ }
140
+
141
+ :global(.table-container:not(:has(.line:nth-child(2)))) .delete {
142
+ display: none;
143
+ }
144
+
145
+ .delete {
146
+ display: flex;
147
+ justify-content: end;
148
+ padding: var(--pad-s);
149
+ }
150
+ </style>