fokus-styles 2.5.0 → 2.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/README.md +20 -2
  2. package/package.json +19 -16
  3. package/packages/fokus-cli/README.md +5 -0
  4. package/packages/fokus-icons/README.md +5 -0
  5. package/packages/fokus-react/README.md +5 -0
  6. package/CHANGELOG.md +0 -940
  7. package/dist/css/components.css.map +0 -1
  8. package/dist/css/components.min.css.map +0 -1
  9. package/dist/css/fokus-components.css.map +0 -1
  10. package/dist/css/fokus-components.min.css.map +0 -1
  11. package/dist/css/fokus-core.css.map +0 -1
  12. package/dist/css/fokus-core.min.css.map +0 -1
  13. package/dist/css/fokus-dark.css.map +0 -1
  14. package/dist/css/fokus-dark.min.css.map +0 -1
  15. package/dist/css/fokus-rtl.css.map +0 -1
  16. package/dist/css/fokus-rtl.min.css.map +0 -1
  17. package/dist/css/fokus-utilities.css.map +0 -1
  18. package/dist/css/fokus-utilities.min.css.map +0 -1
  19. package/dist/css/fokus.css.map +0 -1
  20. package/dist/css/fokus.min.css.map +0 -1
  21. package/dist/css/fonts.css.map +0 -1
  22. package/dist/css/fonts.min.css.map +0 -1
  23. package/dist/css/forms.css.map +0 -1
  24. package/dist/css/forms.min.css.map +0 -1
  25. package/dist/css/helpers.css.map +0 -1
  26. package/dist/css/helpers.min.css.map +0 -1
  27. package/dist/css/layout.css.map +0 -1
  28. package/dist/css/layout.min.css.map +0 -1
  29. package/dist/js/fokus.js.map +0 -7
  30. package/dist/js/fokus.min.js.map +0 -7
  31. package/docs/README.md +0 -86
  32. package/docs/comparison.md +0 -124
  33. package/docs/components/accordion.md +0 -104
  34. package/docs/components/alert-dialog.md +0 -99
  35. package/docs/components/alert.md +0 -104
  36. package/docs/components/avatar.md +0 -13
  37. package/docs/components/badge.md +0 -101
  38. package/docs/components/breadcrumb.md +0 -93
  39. package/docs/components/button-group.md +0 -13
  40. package/docs/components/button.md +0 -98
  41. package/docs/components/card.md +0 -111
  42. package/docs/components/carousel.md +0 -167
  43. package/docs/components/checkbox.md +0 -110
  44. package/docs/components/close-button.md +0 -13
  45. package/docs/components/code.md +0 -13
  46. package/docs/components/collapse.md +0 -78
  47. package/docs/components/combobox.md +0 -123
  48. package/docs/components/command-palette.md +0 -131
  49. package/docs/components/datatable.md +0 -173
  50. package/docs/components/datepicker.md +0 -137
  51. package/docs/components/divider.md +0 -57
  52. package/docs/components/dropdown.md +0 -103
  53. package/docs/components/empty-state.md +0 -65
  54. package/docs/components/file-upload-advanced.md +0 -116
  55. package/docs/components/file-upload.md +0 -93
  56. package/docs/components/icon-link.md +0 -13
  57. package/docs/components/input-group.md +0 -73
  58. package/docs/components/input.md +0 -90
  59. package/docs/components/list-group.md +0 -13
  60. package/docs/components/modal.md +0 -120
  61. package/docs/components/navbar.md +0 -74
  62. package/docs/components/nested-menu.md +0 -90
  63. package/docs/components/notification-center.md +0 -116
  64. package/docs/components/offcanvas.md +0 -102
  65. package/docs/components/pagination.md +0 -145
  66. package/docs/components/placeholder.md +0 -13
  67. package/docs/components/popover.md +0 -118
  68. package/docs/components/progress.md +0 -126
  69. package/docs/components/radio.md +0 -80
  70. package/docs/components/range.md +0 -83
  71. package/docs/components/rating.md +0 -91
  72. package/docs/components/ratio.md +0 -13
  73. package/docs/components/responsive.md +0 -19
  74. package/docs/components/scrollspy.md +0 -13
  75. package/docs/components/segmented-control.md +0 -82
  76. package/docs/components/select.md +0 -89
  77. package/docs/components/skeleton.md +0 -70
  78. package/docs/components/stepper.md +0 -107
  79. package/docs/components/switch.md +0 -97
  80. package/docs/components/table.md +0 -90
  81. package/docs/components/tabs.md +0 -104
  82. package/docs/components/tag.md +0 -144
  83. package/docs/components/tile.md +0 -112
  84. package/docs/components/timeline.md +0 -78
  85. package/docs/components/toast.md +0 -108
  86. package/docs/components/tooltip.md +0 -113
  87. package/docs/components/tree-view.md +0 -118
  88. package/docs/contributing/contributing.md +0 -18
  89. package/docs/getting-started/installation.md +0 -70
  90. package/docs/getting-started/usage.md +0 -105
  91. package/docs/guides/accessibility.md +0 -109
  92. package/docs/guides/charts.md +0 -73
  93. package/docs/guides/dark-mode.md +0 -90
  94. package/docs/guides/icons.md +0 -99
  95. package/docs/guides/javascript-api.md +0 -9
  96. package/docs/guides/layout-advanced.md +0 -118
  97. package/docs/guides/migration-clarus-to-fokus.md +0 -48
  98. package/docs/guides/migration-external.md +0 -123
  99. package/docs/guides/migration-v1.md +0 -63
  100. package/docs/guides/print.md +0 -30
  101. package/docs/guides/rtl-and-system-preferences.md +0 -28
  102. package/docs/guides/theming.md +0 -140
  103. package/docs/guides/utility-api.md +0 -9
  104. package/docs/prompts/prompt-plan.md +0 -45
  105. package/docs/reference/accessibility-matrix.md +0 -77
  106. package/docs/reference/browser-support.md +0 -75
  107. package/docs/reference/contrast-report.md +0 -54
  108. package/docs/reference/definitions.md +0 -868
  109. package/docs/reference/design-tokens.md +0 -208
  110. package/docs/reference/scss-architecture.md +0 -227
  111. package/docs/reference/size-baseline.json +0 -34
  112. package/docs/reference/stability.md +0 -89
  113. package/docs/showcase.md +0 -25
  114. package/mockup/README.md +0 -41
  115. package/mockup/assets/carousel-planning.png +0 -0
  116. package/mockup/assets/carousel-workspace.png +0 -0
  117. package/mockup/assets/example-theme.css +0 -19
  118. package/mockup/assets/example-theme.js +0 -11
  119. package/mockup/assets/showcase-contracts.js +0 -84
  120. package/mockup/assets/showcase.css +0 -91
  121. package/mockup/assets/showcase.js +0 -724
  122. package/mockup/content-data.html +0 -9
  123. package/mockup/examples/accordion-tabs-toast.html +0 -149
  124. package/mockup/examples/alert-dialog.html +0 -84
  125. package/mockup/examples/alerts.html +0 -115
  126. package/mockup/examples/badges-alerts.html +0 -109
  127. package/mockup/examples/buttons.html +0 -58
  128. package/mockup/examples/cards.html +0 -132
  129. package/mockup/examples/carousel.html +0 -126
  130. package/mockup/examples/charts.html +0 -102
  131. package/mockup/examples/check-radio-switch.html +0 -620
  132. package/mockup/examples/collapse.html +0 -69
  133. package/mockup/examples/combobox.html +0 -60
  134. package/mockup/examples/command-palette.html +0 -64
  135. package/mockup/examples/datatable.html +0 -113
  136. package/mockup/examples/datepicker.html +0 -62
  137. package/mockup/examples/divider.html +0 -45
  138. package/mockup/examples/dropdown-tooltip.html +0 -77
  139. package/mockup/examples/empty-state.html +0 -56
  140. package/mockup/examples/file-drop.html +0 -74
  141. package/mockup/examples/file-upload-advanced.html +0 -68
  142. package/mockup/examples/forms-advanced.html +0 -77
  143. package/mockup/examples/hover-card.html +0 -86
  144. package/mockup/examples/icons.html +0 -157
  145. package/mockup/examples/input-group.html +0 -74
  146. package/mockup/examples/js-foundation.html +0 -215
  147. package/mockup/examples/layout.html +0 -134
  148. package/mockup/examples/modal-select.html +0 -127
  149. package/mockup/examples/nested-menu.html +0 -73
  150. package/mockup/examples/notification-center.html +0 -86
  151. package/mockup/examples/offcanvas-popover.html +0 -133
  152. package/mockup/examples/pagination-breadcrumbs.html +0 -92
  153. package/mockup/examples/popover.html +0 -81
  154. package/mockup/examples/range.html +0 -69
  155. package/mockup/examples/rating.html +0 -103
  156. package/mockup/examples/segmented-control.html +0 -96
  157. package/mockup/examples/skeletons.html +0 -82
  158. package/mockup/examples/spinner-progress.html +0 -130
  159. package/mockup/examples/stepper.html +0 -119
  160. package/mockup/examples/tables-navbar.html +0 -89
  161. package/mockup/examples/tag.html +0 -115
  162. package/mockup/examples/theming.html +0 -68
  163. package/mockup/examples/tile.html +0 -107
  164. package/mockup/examples/timeline.html +0 -108
  165. package/mockup/examples/toast.html +0 -113
  166. package/mockup/examples/tooltip.html +0 -68
  167. package/mockup/examples/tree-view.html +0 -68
  168. package/mockup/feedback-actions.html +0 -9
  169. package/mockup/forms.html +0 -13
  170. package/mockup/foundations.html +0 -7
  171. package/mockup/kitchen-sink.html +0 -696
  172. package/mockup/navigation-disclosure.html +0 -11
  173. package/mockup/overlays-commands.html +0 -12
  174. package/mockup/templates/README.md +0 -20
  175. package/mockup/templates/admin.html +0 -334
  176. package/mockup/templates/auth.html +0 -234
  177. package/mockup/templates/dashboard.html +0 -442
  178. package/mockup/templates/landing.html +0 -397
  179. package/packages/fokus-icons/package.json +0 -46
  180. package/scripts/migrate-fokus-map.json +0 -1366
  181. package/scripts/migrate-fokus.mjs +0 -97
@@ -1,69 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Mockup - Collapse</title>
7
-
8
- <!-- STYLES IMPORT -->
9
- <link rel="stylesheet" href="../../dist/css/fonts.css">
10
- <link rel="stylesheet" href="../../dist/css/components.css">
11
- <link rel="stylesheet" href="../../dist/css/helpers.css">
12
- <style>
13
- .theme-panel {
14
- padding: 24px;
15
- }
16
-
17
- html[data-theme="dark"] .theme-panel {
18
- color: var(--fs-color-text);
19
- background-color: var(--fs-color-surface);
20
- }
21
-
22
- section {
23
- max-width: 420px;
24
- margin-bottom: 24px;
25
- }
26
-
27
- .collapse-body {
28
- padding: 12px 16px;
29
- margin-top: 8px;
30
- background-color: var(--fs-color-subtle);
31
- border-radius: var(--fs-radius-sm);
32
- }
33
- </style>
34
- <link rel="stylesheet" href="../assets/example-theme.css">
35
- <script src="../assets/example-theme.js"></script>
36
- </head>
37
- <body>
38
-
39
- <div class="theme-panel">
40
- <section>
41
- <p class="fs-u-fs-sm fs-u-fw-medium fs-u-mb-2">Seção expansível independente (fechada por padrão)</p>
42
- <button type="button" class="fs-btn" data-fs="collapse" data-fs-target="#collapse-detalhes">
43
- Ver detalhes
44
- </button>
45
- <div class="fs-collapse" id="collapse-detalhes">
46
- <div class="collapse-body">
47
- Conteúdo adicional, revelado/ocultado via <code class="fs-u-font-mono">FokusStyles.Collapse</code>,
48
- reaproveitando <code class="fs-u-font-mono">collapse()</code>/<code class="fs-u-font-mono">expand()</code>
49
- de <code class="fs-u-font-mono">js/core/transition.js</code> (mesma infraestrutura do Accordion).
50
- </div>
51
- </div>
52
- </section>
53
-
54
- <section>
55
- <p class="fs-u-fs-sm fs-u-fw-medium fs-u-mb-2">Iniciando aberto (aria-expanded="true")</p>
56
- <button type="button" class="fs-btn" data-fs="collapse" data-fs-target="#collapse-aberto" aria-expanded="true">
57
- Ocultar termos
58
- </button>
59
- <div class="fs-collapse" id="collapse-aberto">
60
- <div class="collapse-body">Este painel começa visível porque o gatilho já tem <code class="fs-u-font-mono">aria-expanded="true"</code>.</div>
61
- </div>
62
- </section>
63
- </div>
64
-
65
-
66
-
67
- <script src="../../dist/js/fokus.js"></script>
68
- </body>
69
- </html>
@@ -1,60 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Mockup - Combobox</title>
7
-
8
- <!-- STYLES IMPORT -->
9
- <link rel="stylesheet" href="../../dist/css/fonts.css">
10
- <link rel="stylesheet" href="../../dist/css/components.css">
11
- <link rel="stylesheet" href="../../dist/css/forms.css">
12
- <link rel="stylesheet" href="../../dist/css/helpers.css">
13
- <style>
14
- .theme-panel {
15
- padding: 24px;
16
- }
17
-
18
- html[data-theme="dark"] .theme-panel {
19
- color: var(--fs-color-text);
20
- background-color: var(--fs-color-surface);
21
- }
22
-
23
- section {
24
- max-width: 320px;
25
- margin-bottom: 24px;
26
- }
27
- </style>
28
- <link rel="stylesheet" href="../assets/example-theme.css">
29
- <script src="../assets/example-theme.js"></script>
30
- </head>
31
- <body>
32
-
33
- <div class="theme-panel">
34
- <section>
35
- <p class="fs-u-fs-sm fs-u-fw-medium fs-u-mb-1">Combobox — digite pra filtrar (ex.: "css")</p>
36
- <label for="combobox-claro" class="fs-form-label">Framework CSS favorito</label>
37
- <div class="fs-combobox">
38
- <input type="text" class="fs-form-control" id="combobox-claro" data-fs="combobox" data-fs-target="#combobox-claro-listbox" placeholder="Buscar framework…">
39
- </div>
40
- <ul class="fs-dropdown-menu fs-combobox-listbox" id="combobox-claro-listbox">
41
- <li class="fs-dropdown-item" data-value="bootstrap">Bootstrap</li>
42
- <li class="fs-dropdown-item" data-value="tailwind">Tailwind CSS</li>
43
- <li class="fs-dropdown-item" data-value="bulma">Bulma</li>
44
- <li class="fs-dropdown-item" data-value="foundation">Foundation</li>
45
- <li class="fs-dropdown-item" data-value="uikit">UIkit</li>
46
- <li class="fs-dropdown-item" data-value="cirrus">Cirrus</li>
47
- <li class="fs-dropdown-item" data-value="fokus">Fokus Styles</li>
48
- <li class="fs-dropdown-item is-disabled" data-value="descontinuado">Framework descontinuado</li>
49
- <li class="fs-dropdown-item is-disabled" data-fs-empty hidden>Nenhum resultado encontrado.</li>
50
- </ul>
51
- </section>
52
- </div>
53
-
54
-
55
-
56
- <!-- SCRIPTS IMPORT -->
57
- <script src="../../dist/js/fokus.js"></script>
58
-
59
- </body>
60
- </html>
@@ -1,64 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Mockup - Command Palette</title>
7
-
8
- <!-- STYLES IMPORT -->
9
- <link rel="stylesheet" href="../../dist/css/fonts.css">
10
- <link rel="stylesheet" href="../../dist/css/components.css">
11
- <link rel="stylesheet" href="../../dist/css/forms.css">
12
- <link rel="stylesheet" href="../../dist/css/helpers.css">
13
- <style>
14
- .theme-panel {
15
- padding: 24px;
16
- }
17
-
18
- html[data-theme="dark"] .theme-panel {
19
- color: var(--fs-color-text);
20
- background-color: var(--fs-color-surface);
21
- }
22
-
23
- section {
24
- max-width: 320px;
25
- margin-bottom: 24px;
26
- }
27
- </style>
28
- <link rel="stylesheet" href="../assets/example-theme.css">
29
- <script src="../assets/example-theme.js"></script>
30
- </head>
31
- <body>
32
-
33
- <div class="theme-panel">
34
- <section>
35
- <p class="fs-u-fs-sm fs-u-fw-medium fs-u-mb-1">Command Palette — clique ou pressione Ctrl+K / Cmd+K</p>
36
- <button type="button" class="fs-btn fs-btn-primary" data-fs="command-palette" data-fs-target="#paleta-claro" data-fs-shortcut="mod+k">
37
- Comandos (Ctrl+K)
38
- </button>
39
-
40
- <div class="fs-command-palette" id="paleta-claro">
41
- <div class="fs-command-palette-dialog">
42
- <input type="text" class="fs-command-palette-input" placeholder="Digite um comando…">
43
- <ul class="fs-command-palette-list">
44
- <li class="fs-dropdown-header">Arquivo</li>
45
- <li class="fs-dropdown-item" data-value="new-file">Novo arquivo</li>
46
- <li class="fs-dropdown-item" data-value="open-file">Abrir arquivo…</li>
47
- <li class="fs-dropdown-header">Ver</li>
48
- <li class="fs-dropdown-item" data-value="toggle-theme">Alternar tema claro/escuro</li>
49
- <li class="fs-dropdown-item" data-value="open-settings">Abrir configurações</li>
50
- <li class="fs-dropdown-item is-disabled" data-value="disabled">Comando indisponível</li>
51
- <li class="fs-dropdown-item is-disabled" data-fs-empty hidden>Nenhum comando encontrado.</li>
52
- </ul>
53
- </div>
54
- </div>
55
- </section>
56
- </div>
57
-
58
-
59
-
60
- <!-- SCRIPTS IMPORT -->
61
- <script src="../../dist/js/fokus.js"></script>
62
-
63
- </body>
64
- </html>
@@ -1,113 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Mockup - DataTable</title>
7
-
8
- <!-- STYLES IMPORT -->
9
- <link rel="stylesheet" href="../../dist/css/fonts.css">
10
- <link rel="stylesheet" href="../../dist/css/components.css">
11
- <link rel="stylesheet" href="../../dist/css/forms.css">
12
- <link rel="stylesheet" href="../../dist/css/helpers.css">
13
- <style>
14
- .theme-panel {
15
- padding: 24px;
16
- }
17
-
18
- html[data-theme="dark"] .theme-panel {
19
- color: var(--fs-color-text);
20
- background-color: var(--fs-color-surface);
21
- }
22
-
23
- section {
24
- max-width: 560px;
25
- margin-bottom: 24px;
26
- }
27
-
28
- .demo-actions {
29
- display: flex;
30
- gap: 8px;
31
- margin-top: 12px;
32
- }
33
- </style>
34
- <link rel="stylesheet" href="../assets/example-theme.css">
35
- <script src="../assets/example-theme.js"></script>
36
- </head>
37
- <body>
38
-
39
- <div class="theme-panel">
40
- <section>
41
- <p class="fs-u-fs-sm fs-u-fw-medium fs-u-mb-1">DataTable — ordene por coluna, filtre e pagine (5 linhas/página)</p>
42
- <div class="fs-datatable" id="datatable-claro" data-fs="datatable" data-fs-page-size="5">
43
- <div class="fs-datatable-toolbar">
44
- <input type="search" class="fs-form-control" data-fs-datatable-filter placeholder="Filtrar por nome ou framework…">
45
- </div>
46
- <table class="fs-table fs-table-striped fs-table-hover">
47
- <thead>
48
- <tr>
49
- <th scope="col" data-fs-sort="name">Nome</th>
50
- <th scope="col" data-fs-sort="framework">Framework</th>
51
- <th scope="col" data-fs-sort="year">Lançamento</th>
52
- </tr>
53
- </thead>
54
- <tbody>
55
- <tr><td>Ana</td><td>Fokus Styles</td><td>2026</td></tr>
56
- <tr><td>Bruno</td><td>Cirrus UI</td><td>2018</td></tr>
57
- <tr><td>Carla</td><td>UIkit</td><td>2013</td></tr>
58
- <tr><td>Diego</td><td>Bulma</td><td>2016</td></tr>
59
- <tr><td>Elisa</td><td>Foundation</td><td>2011</td></tr>
60
- <tr><td>Fábio</td><td>Materialize</td><td>2014</td></tr>
61
- <tr><td>Giulia</td><td>Pure.css</td><td>2013</td></tr>
62
- <tr><td>Hugo</td><td>Milligram</td><td>2015</td></tr>
63
- <tr><td>Iris</td><td>Spectre.css</td><td>2017</td></tr>
64
- <tr><td>João</td><td>Tachyons</td><td>2014</td></tr>
65
- <tr><td>Karina</td><td>Picnic CSS</td><td>2016</td></tr>
66
- <tr><td>Lucas</td><td>Almost Flat</td><td>2013</td></tr>
67
- </tbody>
68
- </table>
69
- <div class="fs-empty-state" data-fs-datatable-empty hidden>
70
- <div class="fs-empty-state-icon" aria-hidden="true"><svg class="fs-icon" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m21 21-4.34-4.34"/><circle cx="11" cy="11" r="8"/></svg></div>
71
- <p class="fs-empty-state-title">Nenhum resultado encontrado.</p>
72
- </div>
73
- <div class="fs-datatable-loading" data-fs-datatable-loading hidden>
74
- <div class="fs-skeleton fs-skeleton-text" style="width: 100%; height: 20px; margin-bottom: 8px;"></div>
75
- <div class="fs-skeleton fs-skeleton-text" style="width: 100%; height: 20px; margin-bottom: 8px;"></div>
76
- <div class="fs-skeleton fs-skeleton-text" style="width: 100%; height: 20px;"></div>
77
- </div>
78
- <div class="fs-empty-state" data-fs-datatable-error hidden>
79
- <div class="fs-empty-state-icon" aria-hidden="true"><svg class="fs-icon" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3"/><path d="M12 9v4"/><path d="M12 17h.01"/></svg></div>
80
- <p class="fs-empty-state-title">Falha ao carregar dados</p>
81
- <p class="fs-empty-state-text" data-fs-datatable-error-message></p>
82
- </div>
83
- </div>
84
- <div class="demo-actions">
85
- <button type="button" class="fs-btn fs-btn-sm" data-demo-action="loading" data-demo-target="datatable-claro">Simular carregando</button>
86
- <button type="button" class="fs-btn fs-btn-sm" data-demo-action="error" data-demo-target="datatable-claro">Simular erro</button>
87
- <button type="button" class="fs-btn fs-btn-sm" data-demo-action="reset" data-demo-target="datatable-claro">Normal</button>
88
- </div>
89
- </section>
90
- </div>
91
-
92
-
93
-
94
- <!-- SCRIPTS IMPORT -->
95
- <script src="../../dist/js/fokus.js"></script>
96
- <script>
97
- // Só pro mockup: os botões abaixo demonstram setLoading()/setError(),
98
- // que na vida real seriam chamados ao redor de uma requisição real.
99
- document.querySelectorAll("[data-demo-action]").forEach((btn) => {
100
- btn.addEventListener("click", () => {
101
- const instance = FokusStyles.DataTable.getInstance(document.getElementById(btn.dataset.demoTarget));
102
- if (btn.dataset.demoAction === "loading") instance.setLoading(true);
103
- else if (btn.dataset.demoAction === "error") instance.setError("Não foi possível conectar ao servidor.");
104
- else {
105
- instance.setLoading(false);
106
- instance.setError(null);
107
- }
108
- });
109
- });
110
- </script>
111
-
112
- </body>
113
- </html>
@@ -1,62 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Mockup - Datepicker &amp; Timepicker</title>
7
-
8
- <!-- STYLES IMPORT -->
9
- <link rel="stylesheet" href="../../dist/css/fonts.css">
10
- <link rel="stylesheet" href="../../dist/css/components.css">
11
- <link rel="stylesheet" href="../../dist/css/forms.css">
12
- <link rel="stylesheet" href="../../dist/css/helpers.css">
13
- <style>
14
- .theme-panel {
15
- padding: 24px;
16
- }
17
-
18
- html[data-theme="dark"] .theme-panel {
19
- color: var(--fs-color-text);
20
- background-color: var(--fs-color-surface);
21
- }
22
-
23
- section {
24
- max-width: 320px;
25
- margin-bottom: 24px;
26
- }
27
- </style>
28
- <link rel="stylesheet" href="../assets/example-theme.css">
29
- <script src="../assets/example-theme.js"></script>
30
- </head>
31
- <body>
32
-
33
- <div class="theme-panel">
34
- <section>
35
- <p class="fs-u-fs-sm fs-u-fw-medium fs-u-mb-1">Datepicker — calendário customizado (JS)</p>
36
- <label for="datepicker-claro" class="fs-form-label">Data de entrega</label>
37
- <div class="fs-datepicker">
38
- <input type="text" class="fs-form-control" id="datepicker-claro" data-fs="datepicker" data-fs-target="#datepicker-claro-panel" placeholder="dd/mm/aaaa" value="15/07/2026">
39
- </div>
40
- <div id="datepicker-claro-panel"></div>
41
- </section>
42
-
43
- <section>
44
- <p class="fs-u-fs-sm fs-u-fw-medium fs-u-mb-1">Date nativo — <code>&lt;input type="date"&gt;</code> estilizado (CSS-only)</p>
45
- <label for="native-date-claro" class="fs-form-label">Data de nascimento</label>
46
- <input type="date" class="fs-form-control" id="native-date-claro">
47
- </section>
48
-
49
- <section>
50
- <p class="fs-u-fs-sm fs-u-fw-medium fs-u-mb-1">Time nativo — <code>&lt;input type="time"&gt;</code> estilizado (CSS-only)</p>
51
- <label for="native-time-claro" class="fs-form-label">Horário preferido</label>
52
- <input type="time" class="fs-form-control" id="native-time-claro">
53
- </section>
54
- </div>
55
-
56
-
57
-
58
- <!-- SCRIPTS IMPORT -->
59
- <script src="../../dist/js/fokus.js"></script>
60
-
61
- </body>
62
- </html>
@@ -1,45 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Mockup - Divider</title>
7
-
8
- <!-- STYLES IMPORT -->
9
- <link rel="stylesheet" href="../../dist/css/fonts.css">
10
- <link rel="stylesheet" href="../../dist/css/components.css">
11
- <link rel="stylesheet" href="../../dist/css/helpers.css">
12
- <style>
13
- .theme-panel {
14
- padding: 24px;
15
- background-color: var(--fs-color-subtle);
16
- }
17
-
18
- html[data-theme="dark"] .theme-panel {
19
- color: var(--fs-color-text);
20
- background-color: var(--fs-color-surface);
21
- }
22
-
23
- .theme-panel {
24
- max-width: 360px;
25
- }
26
- </style>
27
- <link rel="stylesheet" href="../assets/example-theme.css">
28
- <script src="../assets/example-theme.js"></script>
29
- </head>
30
- <body>
31
- <div class="theme-panel">
32
- <p class="fs-u-mb-0">Texto acima do divisor simples.</p>
33
- <hr class="fs-divider">
34
- <p class="fs-u-mb-0">Texto abaixo.</p>
35
-
36
- <div class="fs-divider"><span class="fs-divider-label">ou</span></div>
37
-
38
- <p class="fs-u-mb-0">Continue com e-mail e senha.</p>
39
-
40
- <div class="fs-divider"><span class="fs-divider-label">Seção 3</span></div>
41
- </div>
42
-
43
-
44
- </body>
45
- </html>
@@ -1,77 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Mockup - Dropdown &amp; Tooltip</title>
7
-
8
- <!-- STYLES IMPORT -->
9
- <link rel="stylesheet" href="../../dist/css/fonts.css">
10
- <link rel="stylesheet" href="../../dist/css/components.css">
11
- <link rel="stylesheet" href="../../dist/css/helpers.css">
12
- <style>
13
- .theme-panel {
14
- padding: 24px;
15
- }
16
-
17
- html[data-theme="dark"] .theme-panel {
18
- color: var(--fs-color-text);
19
- background-color: var(--fs-color-surface);
20
- }
21
-
22
- section {
23
- margin-bottom: 24px;
24
- }
25
- </style>
26
- <link rel="stylesheet" href="../assets/example-theme.css">
27
- <script src="../assets/example-theme.js"></script>
28
- </head>
29
- <body>
30
-
31
- <div class="theme-panel">
32
- <section>
33
- <p class="fs-u-fs-sm fs-u-fw-medium fs-u-mt-3 fs-u-mb-1">Dropdown — auto-init via data-fs, posicionamento, foco e teclado (setas, Escape, clique fora)</p>
34
- <p class="fs-u-fs-xs fs-u-mb-2">Alinhamento padrão (<code class="fs-u-font-mono">data-align="start"</code>, borda esquerda do menu = borda esquerda do botão):</p>
35
- <div class="fs-dropdown fs-u-mr-4">
36
- <button type="button" class="fs-btn fs-btn-primary fs-dropdown-toggle" data-fs="dropdown" data-fs-target="#menu-claro">
37
- Opções
38
- </button>
39
- <div class="fs-dropdown-menu" id="menu-claro">
40
- <span class="fs-dropdown-header">Conta</span>
41
- <a href="#" class="fs-dropdown-item">Perfil</a>
42
- <a href="#" class="fs-dropdown-item">Configurações</a>
43
- <div class="fs-dropdown-divider"></div>
44
- <a href="#" class="fs-dropdown-item is-disabled">Item desabilitado</a>
45
- <button type="button" class="fs-dropdown-item">Sair</button>
46
- </div>
47
- </div>
48
-
49
- <p class="fs-u-fs-xs fs-u-mb-2 fs-u-mt-3"><code class="fs-u-font-mono">data-align="end"</code> (borda direita do menu = borda direita do botão):</p>
50
- <div class="fs-dropdown" style="margin-left: 300px;">
51
- <button type="button" class="fs-btn fs-btn-primary fs-dropdown-toggle" data-fs="dropdown" data-fs-target="#menu-claro-end" data-align="end">
52
- Opções (end)
53
- </button>
54
- <div class="fs-dropdown-menu" id="menu-claro-end">
55
- <a href="#" class="fs-dropdown-item">Perfil</a>
56
- <a href="#" class="fs-dropdown-item">Configurações</a>
57
- <button type="button" class="fs-dropdown-item">Sair</button>
58
- </div>
59
- </div>
60
- </section>
61
-
62
- <section>
63
- <p class="fs-u-fs-sm fs-u-fw-medium fs-u-mb-1">Tooltip — auto-init via data-fs, show/hide por hover/foco, 4 posicionamentos</p>
64
- <button type="button" class="fs-btn fs-u-mr-2" data-fs="tooltip" data-placement="top" title="Tooltip no topo">Top</button>
65
- <button type="button" class="fs-btn fs-u-mr-2" data-fs="tooltip" data-placement="bottom" title="Tooltip embaixo">Bottom</button>
66
- <button type="button" class="fs-btn fs-u-mr-2" data-fs="tooltip" data-placement="left" title="Tooltip à esquerda">Left</button>
67
- <button type="button" class="fs-btn" data-fs="tooltip" data-placement="right" title="Tooltip à direita">Right</button>
68
- </section>
69
- </div>
70
-
71
-
72
-
73
- <!-- SCRIPTS IMPORT -->
74
- <script src="../../dist/js/fokus.js"></script>
75
-
76
- </body>
77
- </html>
@@ -1,56 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Mockup - Empty State</title>
7
-
8
- <!-- STYLES IMPORT -->
9
- <link rel="stylesheet" href="../../dist/css/fonts.css">
10
- <link rel="stylesheet" href="../../dist/css/components.css">
11
- <link rel="stylesheet" href="../../dist/css/helpers.css">
12
- <style>
13
- .theme-panel {
14
- display: flex;
15
- gap: 24px;
16
- padding: 24px;
17
- background-color: var(--fs-color-subtle);
18
- }
19
-
20
- html[data-theme="dark"] .theme-panel {
21
- color: var(--fs-color-text);
22
- background-color: var(--fs-color-surface);
23
- }
24
-
25
- .card-like {
26
- width: 320px;
27
- background-color: var(--fs-color-surface);
28
- border-radius: var(--fs-radius-md);
29
- }
30
- </style>
31
- <link rel="stylesheet" href="../assets/example-theme.css">
32
- <script src="../assets/example-theme.js"></script>
33
- </head>
34
- <body>
35
- <div class="theme-panel">
36
- <div class="card-like">
37
- <div class="fs-empty-state">
38
- <div class="fs-empty-state-icon" aria-hidden="true"><svg class="fs-icon" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m21 21-4.34-4.34"/><circle cx="11" cy="11" r="8"/></svg></div>
39
- <h3 class="fs-empty-state-title">Nenhum resultado encontrado</h3>
40
- <p class="fs-empty-state-text">Tente ajustar os filtros ou buscar por outro termo.</p>
41
- <button type="button" class="fs-btn fs-btn-primary">Limpar filtros</button>
42
- </div>
43
- </div>
44
-
45
- <div class="card-like">
46
- <div class="fs-empty-state">
47
- <div class="fs-empty-state-icon" aria-hidden="true"><svg class="fs-icon" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="22 12 16 12 14 15 10 15 8 12 2 12"/><path d="M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z"/></svg></div>
48
- <h3 class="fs-empty-state-title">Caixa de entrada vazia</h3>
49
- <p class="fs-empty-state-text">Novas mensagens aparecerão aqui.</p>
50
- </div>
51
- </div>
52
- </div>
53
-
54
-
55
- </body>
56
- </html>
@@ -1,74 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Mockup - File Input Drag-and-Drop</title>
7
-
8
- <!-- STYLES IMPORT -->
9
- <link rel="stylesheet" href="../../dist/css/fonts.css">
10
- <link rel="stylesheet" href="../../dist/css/forms.css">
11
- <link rel="stylesheet" href="../../dist/css/helpers.css">
12
- <style>
13
- .theme-panel {
14
- display: flex;
15
- flex-direction: column;
16
- gap: 16px;
17
- padding: 24px;
18
- background-color: var(--fs-color-subtle);
19
- }
20
-
21
- html[data-theme="dark"] .theme-panel {
22
- color: var(--fs-color-text);
23
- background-color: var(--fs-color-surface);
24
- }
25
-
26
- .theme-panel > div {
27
- max-width: 360px;
28
- }
29
-
30
- #resultado {
31
- font-size: 0.85rem;
32
- color: var(--fs-color-muted);
33
- }
34
- </style>
35
- <link rel="stylesheet" href="../assets/example-theme.css">
36
- <script src="../assets/example-theme.js"></script>
37
- </head>
38
- <body>
39
- <div class="theme-panel">
40
- <p class="fs-u-fs-sm fs-u-fw-medium fs-u-mb-0">Arraste um arquivo para a área abaixo (ou clique)</p>
41
- <div class="fs-file-upload">
42
- <input type="file" class="fs-file-input" id="arquivo-1">
43
- <label for="arquivo-1" class="fs-file-label fs-file-label-dropzone" data-fs="file-drop">
44
- <span>Arraste um arquivo aqui</span>
45
- <span class="fs-file-dropzone-hint">ou clique para escolher</span>
46
- </label>
47
- </div>
48
- <p id="resultado">Nenhum arquivo selecionado.</p>
49
-
50
- <p class="fs-u-fs-sm fs-u-fw-medium fs-u-mb-0">Botão padrão (mesma funcionalidade, sem o visual de dropzone)</p>
51
- <div class="fs-file-upload">
52
- <input type="file" class="fs-file-input" id="arquivo-2">
53
- <label for="arquivo-2" class="fs-file-label" data-fs="file-drop">Escolher arquivo</label>
54
- </div>
55
-
56
- <p class="fs-u-fs-sm fs-u-fw-medium fs-u-mb-0">Desabilitado</p>
57
- <div class="fs-file-upload">
58
- <input type="file" class="fs-file-input" id="arquivo-3" disabled>
59
- <label for="arquivo-3" class="fs-file-label fs-file-label-dropzone" data-fs="file-drop">
60
- <span>Desabilitado</span>
61
- </label>
62
- </div>
63
- </div>
64
-
65
-
66
- <script src="../../dist/js/fokus.js"></script>
67
- <script>
68
- document.getElementById("arquivo-1").addEventListener("change", (event) => {
69
- const file = event.target.files[0];
70
- document.getElementById("resultado").textContent = file ? `Selecionado: ${file.name}` : "Nenhum arquivo selecionado.";
71
- });
72
- </script>
73
- </body>
74
- </html>